Vba 防止VBE编辑器窗口闪烁
有关于这方面的帖子,但似乎我做错了什么,因为窗口仍在闪烁。以下是我代码的相关部分:Vba 防止VBE编辑器窗口闪烁,vba,excel,vb6,Vba,Excel,Vb6,有关于这方面的帖子,但似乎我做错了什么,因为窗口仍在闪烁。以下是我代码的相关部分: Private Declare Function LockWindowUpdate Lib "user32" (ByVal hWndLock As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal ClassName As String, ByVal WindowName As Str
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hWndLock As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal ClassName As String, ByVal WindowName As String) As Long
170 oExcel.VBE.MainWindow.Visible = False
180 VBEHwnd = FindWindow("wndclass_desked_gsk", oExcel.VBE.MainWindow.Caption)
190 If VBEHwnd Then LockWindowUpdate VBEHwnd
200 With MB.VBProject.VBComponents(MB.Worksheets(sht.Name).CodeName).CodeModule
210 .InsertLines Line:=.CreateEventProc("Click", printbut.Name) + 1, String:=vbCrLf & "Call Sheet4.printbutton"
220 End With
230 oExcel.VBE.MainWindow.Visible = False
240 LockWindowUpdate 0&
我做错了什么?(该代码基于CPearson的代码)
谢谢你的帮助。我什么都试过了,都没法用。因此,我最终使用的另一个选项(不可取)是:
170 oExcel.VBE.mainwindow.Visible = False
180 curPos = oExcel.VBE.mainwindow.Left
190 oExcel.VBE.mainwindow.Left = 10000
200 With MB.VBProject.VBComponents(MB.Worksheets(sht.Name).CodeName).CodeModule
210 .InsertLines Line:=.CreateEventProc("Click", printbut.Name) + 1, String:=vbCrLf & "Call Sheet4.printbutton"
220 End With
230 oExcel.VBE.mainwindow.Visible = False
240 oExcel.VBE.mainwindow.Left = curPos
检查
VBEHwnd
是否实际返回了某些内容。将行如果VBEHwnd,则锁定窗口更新VBEHwnd
更改为如果VBEHwnd,则锁定窗口更新VBEHwnd Else MsgBox“未找到窗口”
发生了什么?我在调试模式下运行了它,它确实返回True并处理行“锁定窗口更新VBEHwnd”,但它仍然闪烁。VBEHwnd
将永远不会返回True
或False
如果找到一个窗口,那么它应该返回一个数字。但是,如果您没有看到使用上述代码的消息框,则表示已找到该窗口。我回来后会再看一遍你的代码。我现在不在……我的意思是,如果没有返回False,它将返回一个数字。也许我应该提到这是一个自动化Excel的VB6程序。Siddharth,你有机会测试代码吗?非常感谢。