ich habe 6 Module erstellt, in denen ich 1 Makro bzw. 3 Makros stehen habe. Wenn ich nun per commandbutton alle Module nacheinander laufen lasse bekomme ich ein anderes Ergebnis, als wenn ich die Module einzeln nacheinander abspiele. Liegt das vielleicht daran, dass ich in jedem einzelnen Modul den gleichen Begriff "dimme" - also Dim wks, arrwks pro Modul? Ein Auszug der Module folgt.
Danke Euch & Grüße
Rene
Commandbutton sieht so aus:
Private Sub CommandButton1_Click()
Call BlattschutzAus
Call SpaltenEinblenden
Call Rest
End Sub
Modul 1Sub BlattschutzAus()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Sheets
If wks.ProtectContents Then
wks.Unprotect "test"
End If
Next wks
End Sub Modul2
Sub SpaltenEinblenden()
Dim wks, arrwks
arrwks = Array(Worksheets("tabelle1"), Worksheets("tabelle2"), Worksheets("tabelle3"))
For Each wks In arrwks
wks.Range("A:BT").EntireColumn.Hidden = False
Next wks
End Sub Modul3 => hier passiert dann das "Mysterium", indem der einzelne Code etwas anderes macht als über den Aufruf per Commandbutton?!!
Sub Rest()
Dim StM, FM, VM as Date
Dim wks, arrwks
arrwks = Array(Worksheets("tabelle1"), Worksheets("tabelle2"), Worksheets("tabelle3"))
FM= DateSerial(Year(Date), Month(Date), 1)
StM = DateSerial(Year(Date), Month(Date) - 14, 1)
VM = DateSerial(Year(Date), Month(Date) - 1, 1)
E = Application.Match(CLng(FM), Range("A4:BT4"), 0)
A = Application.Match(CLng(StM), Range("A4:BT4"), 0)
M = Application.Match(CLng(VM), Range("A4:BT4"), 0)
For Each wks In arrwks
With wks
If wks.ProtectContents Then
wks.Unprotect "test"
End If
wks.Range("A:BT").EntireColumn.Hidden = False
If IsError(SpalteE) Then
MsgBox "Fehler"
Else
.Range("B:BT").ColumnWidth = 15
.Range(.Cells(4, E), .Cells(1, 72)).EntireColumn.Hidden = True
End If
If IsError(A) Then
MsgBox "Fehler"
Else
.Range(.Cells(1, 2), .Cells(4, A)).EntireColumn.Hidden = True
End If
End With
Next wks
End Sub