我有一些按钮运行一些代码,每次我点击这个按钮,VBE就会打开,我不需要它。我在几个不同的地方尝试过Application.VBE.MainWindow.Visible = False (有些没有在这里显示),但是它不能阻止任何事情。
Sub Clear_Sales_Button()
'
' Clear_Sales_Button Macro
'
Application.VBE.MainWindow.Visible = False
ActiveWorkbook.Sheets("Sales").Activate
ActiveSheet.Buttons.Add(44.25, 4.5, 144.75, 19.5).Select
Application.Goto Reference:="Clear_Sales_Button"
Selection.Characters.Text = "Clear Sales"
With Selection.Characters(Start:=1, Length:=11).Font
.Name = "Calibri"
.FontStyle = "Bold"
.Size = 12
.ColorIndex = 3
End With
Selection.OnAction = "Module1.Readd_Button"
Range("A1").Select
End Sub
Sub Readd_Button()
'
' Readd_Button Macro
'
' Keyboard Shortcut: Ctrl+w
'
Application.VBE.MainWindow.Visible = False
Application.ScreenUpdating = False
'Delete all cells
ActiveWorkbook.Sheets("Sales").Activate
ActiveSheet.Cells.Delete
'Add button back to Sales sheet
ActiveSheet.Buttons.Add(48, 15.75, 96, 29.25).Select
Application.Goto Reference:="Readd_Button"
Selection.Characters.Text = "Import Sales"
With Selection.Characters(Start:=1, Length:=12).Font
.Name = "Calibri"
.FontStyle = "Bold"
.Size = 12
.ColorIndex = 1
End With
Selection.OnAction = "Button1_Click"
Range("A1").Select
Application.ScreenUpdating = True
End Sub我只是不希望VBE打开,但却找不到阻止它的方法。
发布于 2019-11-11 16:34:10
代码中的有罪陈述是Application.Goto语句。虽然它的正常用途是跳转到特定的范围,但是提供一个过程名是有效的,参见Microsoft上的Application.Goto。
在您的例子中,您可以在代码Reference:="Clear_Sales_Button"中提供一个子的名称。尽管在MS页面中没有明确说明,但这将“跳转”到VBE中的特定例程--换句话说,显示VBA并滚动到例程(而不是执行它)。
发布于 2019-11-11 16:21:15
这不会在这件事上对你有所帮助,但会帮助你理解如何在不激活活页或任何东西的情况下添加按钮:
Option Explicit
Sub Add_Button(MyMacro As String, MyName As String)
'
' Readd_Button Macro
'
' Keyboard Shortcut: Ctrl+w
'
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("Sales")
'Add button back to Sales sheet
Dim MyButton As Button
Set MyButton = .Buttons.Add(48, 15.75, 96, 29.25)
End With
With MyButton
.Characters.Text = MyName
With .Characters(Start:=1, Length:=12).Font
.Name = "Calibri"
.FontStyle = "Bold"
.Size = 12
.ColorIndex = 1
End With
.OnAction = MyMacro
End With
Application.ScreenUpdating = True
End Sub
Sub Clear_sales_Button()
Add_Button "Module1.Readd_Button", "Clear Sales"
End Sub
Sub Readd_Button()
'Delete all cells
ThisWorkbook.Sheets("Sales").Cells.Delete
Add_Button "Button1_Click", "Import Sales"
End SubP.S:我有带有Office32bit的win10 64位,运行宏时我的VBE不打开。
发布于 2019-11-11 16:21:39
听起来像是鬼断点。断点是插入到编译代码中的操作码,以指示调试器在那里中断。
你不想“隐藏VBE窗口”,这是在解决症状,而不是原因。
从项目中删除模块,并在出现提示时导出代码文件。然后将导出的代码文件重新导入到项目中。
如果代码位于工作表的代码背后(实际上无法导出/重新导入工作表模块),则将其移动到标准模块并重新编译。
这将从本质上“清理”垃圾剩菜编译后的p-代码,并且代码应该停止触及不再存在的鬼断点。
https://stackoverflow.com/questions/58804671
复制相似问题