2017-07-14 246 views
0

我在程序上在工作表上放置了一個按鈕,並且它放置良好,但是當我單擊它時,出現錯誤提示「Can not run the macro。The macro may be not in the workbook or all macros可能會被禁用「。我相信我已經設置好了,但這裏是我的代碼,如果有人發現任何東西將非常感激。VBA Excel按鈕宏錯誤

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 

回答

2

您指的是您在代碼中給出的標籤而不是工作表本身的工作表。

嘗試改變:

.OnAction = "wsCRC.SHDbtn" 

.OnAction = "CRC.SHDbtn" 

甚至

.OnAction = "SHDbtn" 
+0

尼斯,這已經擺脫了這個錯誤的,但是當我按下按鈕,我得到的「對象變量或塊變量未設置」錯誤。我只是通過了CRC。正如你在答案中的第二行代碼中所展示的那樣。任何想法這可能是什麼? – SBozhko

+0

當你得到新的錯誤時突出顯示哪行? – CLR

+0

'If ShowHideDates.Caption =「Hide Old Date Columns」Then' – SBozhko