【问题标题】:VBA Excel Button Macro ErrorVBA Excel 按钮宏错误
【发布时间】:2017-07-14 16:49:55
【问题描述】:

我以编程方式在工作表上放置了一个按钮,它放置得很好,但是当我单击它时,我收到一条错误消息,提示“无法运行宏。此工作簿中可能没有该宏,或者所有宏都可能被禁用”。我相信我已经设置好了,但如果有人发现任何东西,我的代码将不胜感激。

Sub ButtonGenerator()

    Application.ScreenUpdating = False

    Dim wsCRC As Worksheet
    Set wsCRC = Worksheets("CRC")

    Dim lcolumncrc As Long
    lcolumncrc = CRC.LastColumnInCRC

    'Button Declarations
    Dim ShowHideDates As Button

    wsCRC.Buttons.Delete

    'Show/Hide Dates Button Set Up
    Dim SHDrange As Range

    Set SHDrange = wsCRC.Range(Cells(5, lcolumncrc + 2), Cells(5, lcolumncrc + 4))
    Set ShowHideDates = wsCRC.Buttons.Add(SHDrange.Left, SHDrange.Top, SHDrange.Width, SHDrange.Height)

    With ShowHideDates
        .OnAction = "wsCRC.SHDbtn"
        .Caption = "Show Hidden Date Columns"
        .Name = "ShowHideDates"
    End With

    Application.ScreenUpdating = True

End Sub

Sub SHDbtn()

    Dim wsCRC As Worksheet
    Set wsCRC = Worksheets("CRC")
    Dim ShowHideDates As Button

    Dim CurrentDateColumn As Long
    CurrentDateColumn = GetTodaysDateColumn()

    ActiveSheet.Unprotect

    If ShowHideDates.Caption = "Hide Old Date Columns" Then
        wsCRC.Range(wsCRC.Cells(5, 10), wsCRC.Cells(5, CurrentDateColumn - 6)).EntireColumn.Hidden = True
        ShowHideDates.Caption = "Show Hidden Date Columns"
    Else
        wsCRC.Range(wsCRC.Cells(5, 10), wsCRC.Cells(5, CurrentDateColumn - 6)).EntireColumn.Hidden = False
        ShowHideDates.Caption = "Hide Old Date Columns"
    End If

    ActiveSheet.Protect

End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您是通过在代码中指定的标签来引用工作表,而不是作为工作表本身。

    尝试改变:

    .OnAction = "wsCRC.SHDbtn"
    

    .OnAction = "CRC.SHDbtn"
    

    甚至

    .OnAction = "SHDbtn"
    

    【讨论】:

    • 很好,这已经消除了那个错误,但是当我按下按钮时,我得到“对象变量或未设置块变量”错误。我只承认了CRC。正如您在答案的第二行代码中所示。知道这可能是什么吗?
    • 收到新错误时突出显示哪一行?
    • 'If ShowHideDates.Caption = "Hide Old Date Columns" Then'
    • 您声明了一个名为ShowHideDates 的按钮,但您实际上并未将其Set 指向相关按钮。如果ShowHideDates 是您在其下创建按钮的实际名称,那么我不认为您需要声明它,只需引用它,例如CRC.ShowHideDates 也许?
    • 没关系,我已经开始工作了,不过感谢您的帮助!
    猜你喜欢
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多