2017-07-14 6 views
0

Ich programmiere programmatisch eine Schaltfläche auf einem Arbeitsblatt, und es legt gut, aber wenn ich darauf klicke, bekomme ich eine Fehlermeldung "Kann das Makro nicht ausführen. Das Makro möglicherweise nicht in dieser Arbeitsmappe oder alle Makros verfügbar kann deaktiviert sein ". Ich glaube, ich habe es gut eingerichtet, aber hier ist mein Code, wenn jemand etwas entdeckt, würde es sehr schätzen.VBA Excel Button Makro Fehler

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 

Antwort

2

Sie beziehen sich auf ein Arbeitsblatt mit dem Label, das Sie in Ihrem Code angegeben haben, nicht als Arbeitsblatt.

Versuchen Wechsel:

.OnAction = "wsCRC.SHDbtn" 

zu

.OnAction = "CRC.SHDbtn" 

oder sogar

.OnAction = "SHDbtn" 
+0

Nizza, diese loswerden dieser Fehler bekommen hat, aber wenn ich die Taste drücken, erhalte ich die Fehler "Objektvariable oder mit Blockvariable nicht gesetzt". Ich habe nur die CRC entwickelt. wie Sie in der zweiten Zeile des Codes in Ihrer Antwort gezeigt haben. Irgendeine Idee was das sein könnte? – SBozhko

+0

Welche Zeile ist markiert, wenn Sie den neuen Fehler erhalten? – CLR

+0

'Wenn ShowHideDates.Caption = "Alte Datumsspalten ausblenden" Dann' – SBozhko