Mittels des Makrorecorders habe ich zwei Makros erstellt, die mir auf einem Blatt bestimmte Spalten ausblenden oder alle Spalten (wieder) einblenden. Wenn ich mich auf dem Blatt befinde und die Makros per Menü starte, funktioniert alles wie vorgesehen. Wenn ich die beiden Makros jedoch aus meinem VBA-Programm her aufrufe, dann bekomme ich zunächst im VBA-Editor die Fehlermeldung "Die Methode 'Range' für das Objekt 'Global_' ist fehlgeschlagen". Klicke ich nun auf "Debuggen", dann sehe ich, dass der Abbruch an der Stelle erfolgte, wo die ein-/auszublenden Spalten definiert werden. Und nun das (für mich) Seltsame: Setze ich jetzt die Ausführung des Programms mit "F5" fort, ohne irgendwas am Code geändert zu haben, dann wird die Verarbeitung anstandslos fortgesetzt.
Den Code der beiden Makros und der aufrufenden Routine habe ich angehängt. Meine erste Vermutung war, dass der Wechsel auf das Blatt, welches durch die globale Variable "MC_cost_sheet" definiert ist, irgendwie Probleme macht. Allerdings nutze ich die Variable in meinem gesamten VBA-Programm und habe mich nochmals vergewissert, dass Sie bei Aufruf der Makros mit dem richtigen Inhalt zur Verfügung steht. Außerdem ist zum Zeitpunkt des Abbruchs das durch die Variable definierte Blatt bereits das Aktive, denn wenn ich vom Editor mit ALT-TAB zum vorherigen Fenster wechsle, dann zeigt dies das durch die Variable definierte Blatt und nicht mehr das Blatt "Working..." von dem ich das VBA-Prozedur "SpaltenEinAusblenden" aufgerufen wurde.
Ich weiß es kann nur eine Kleinigkeit sein, aber ich komme nicht auf die Lösung.
Sub SpaltenEinAusblenden()
Sheets(MC_cost_Sheet).Select
Range("A1").Select
If NichtAllePBL = "x" Then 'nicht kalkulierte Spalten ausblenden
Call Makro_ausblenden
Else 'alle Spalten einblenden
Call Makro_einblenden
End If
Range("A1").Select
Sheets("Working...").Select
End Sub
Sub Makro_ausblenden()
Range( _
"E:F,K:L,U:V,AA:AB,AK:AL,AQ:AR,BA:BB,BG:BH,BQ:BR,BW:BX,CG:CH,CM:CN,CW:CX,DC:DD,DM:DN,DS:DT,EC:ED,ES:ET,EI:EJ,EY:EZ,FI:FJ,FO:FP,FY:FZ,GE:GF" _
).Select
Selection.EntireColumn.Hidden = True
Range("A1").Select
End Sub
Sub Makro_einblenden()
Columns("A:GJ").Select
Selection.EntireColumn.Hidden = False
Range("A1").Select
End Sub