首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止按钮上的VBE打开

防止按钮上的VBE打开
EN

Stack Overflow用户
提问于 2019-11-11 15:55:51
回答 3查看 104关注 0票数 1

我有一些按钮运行一些代码,每次我点击这个按钮,VBE就会打开,我不需要它。我在几个不同的地方尝试过Application.VBE.MainWindow.Visible = False (有些没有在这里显示),但是它不能阻止任何事情。

代码语言:javascript
复制
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打开,但却找不到阻止它的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-11 16:34:10

代码中的有罪陈述是Application.Goto语句。虽然它的正常用途是跳转到特定的范围,但是提供一个过程名是有效的,参见Microsoft上的Application.Goto

在您的例子中,您可以在代码Reference:="Clear_Sales_Button"中提供一个子的名称。尽管在MS页面中没有明确说明,但这将“跳转”到VBE中的特定例程--换句话说,显示VBA并滚动到例程(而不是执行它)。

票数 4
EN

Stack Overflow用户

发布于 2019-11-11 16:21:15

这不会在这件事上对你有所帮助,但会帮助你理解如何在不激活活页或任何东西的情况下添加按钮:

代码语言:javascript
复制
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 Sub

P.S:我有带有Office32bit的win10 64位,运行宏时我的VBE不打开。

票数 2
EN

Stack Overflow用户

发布于 2019-11-11 16:21:39

听起来像是鬼断点。断点是插入到编译代码中的操作码,以指示调试器在那里中断。

你不想“隐藏VBE窗口”,这是在解决症状,而不是原因。

从项目中删除模块,并在出现提示时导出代码文件。然后将导出的代码文件重新导入到项目中。

如果代码位于工作表的代码背后(实际上无法导出/重新导入工作表模块),则将其移动到标准模块并重新编译。

这将从本质上“清理”垃圾剩菜编译后的p-代码,并且代码应该停止触及不再存在的鬼断点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58804671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档