Tôi muốn ẩn nút Excel trên thanh tác vụ và hiển thị nút riêng cho biểu mẫu người dùng của tôi để nó giống như một ứng dụng. Tôi biết điều này đã được bảo hiểm rất nhiều nhưng tôi gặp rắc rối với một vấn đề cụ thể: mã của tôi hoạt động tốt khi tôi bước qua nó, nhưng không phải nếu tôi để cho nó chạy bình thường. Đây là mã, mà tôi đã đặt trong các mô-đun lớp Userform1:Hiển thị biểu mẫu người dùng Excel dưới dạng nút trên thanh tác vụ
Option Explicit
Private Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" (_
ByVal hWnd As Long, _
ByVal nIndex As Long) _
As Long
Private Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" (_
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) _
As Long
Private Declare Function DrawMenuBar _
Lib "user32" (_
ByVal hWnd As Long) _
As Long
Private Declare Function FindWindowA _
Lib "user32" (_
ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As Long
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE As Long = (-16)
Private Const WS_EX_APPWINDOW = &H40000
Private Const WS_SYSMENU As Long = &H80000
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Sub UserForm_Activate()
Dim lFrmWndHdl As Long
Dim lStyle As Long
lFrmWndHdl = FindWindowA(vbNullString, Me.Caption)
lStyle = GetWindowLong(lFrmWndHdl, GWL_STYLE)
lStyle = lStyle Or WS_SYSMENU
lStyle = lStyle Or WS_MINIMIZEBOX
lStyle = lStyle Or WS_MAXIMIZEBOX
SetWindowLong lFrmWndHdl, GWL_STYLE, (lStyle)
lStyle = GetWindowLong(lFrmWndHdl, GWL_EXSTYLE)
lStyle = lStyle Or WS_EX_APPWINDOW
SetWindowLong lFrmWndHdl, GWL_EXSTYLE, lStyle
DrawMenuBar lFrmWndHdl
AppActivate ("Microsoft Excel")
ThisWorkbook.Application.Visible = False
End Sub
Bước qua mã, khi tôi bước vào thứ 2 đến dòng cuối cùng AppActivate một nút riêng biệt xuất hiện trong thanh tác vụ, và dòng cuối cùng ẩn nút gốc cho sổ làm việc Excel trong thanh tác vụ. Sau đó tôi chỉ còn lại một biểu mẫu người dùng có thể được phóng to hoặc thu nhỏ thành thanh tác vụ giống như bất kỳ ứng dụng thông thường nào. Vấn đề là nếu tôi tải biểu mẫu người dùng thông qua mã, nút riêng biệt cho biểu mẫu người dùng không xuất hiện trên thanh tác vụ, do đó không có các nút Excel nào hiển thị trên thanh tác vụ.
gì sẽ xảy ra nếu bạn thêm 'DoEvents' sau' DrawMenuBar lFrmWndHdl' –
Và cũng sau 'AppActivate ("Microsoft Excel") ' –
Tôi đã cố gắng đó. Nó không giúp được gì. Tôi cũng đã thử application.wait. –