Excel VBA auf mehreren Tabellenblättern das gleiche Machen

Excelmania

Lieutenant
Registriert
Apr. 2010
Beiträge
797
Hallo.

Ich habe eine Excel Arbeitsmappe. Diese besteht aus 15 Tabellenblättern. Auf den 12 Monatstabellenblättern soll über ein Makro das selbe gemacht werden.
Das Löschen funktioniert. Beim Setzen eines Parameters gibt es jedoch Probleme.

Code:
Private Sub CMD_SD_Aktualisieren_Click()

Dim ws As Worksheet
    eZ = 17
    lZ = 47

    Application.ScreenUpdating = False

For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "Stammdaten" Then
 If ws.Name <> "Optionen" Then
  If ws.Name <> "Auswertung" Then
          
    ws.Range("B17:H47").ClearContents
    ws.Range("K17:M47").ClearContents
    
  End If
 End If
End If
Next

'Januar
    With Worksheets("Jan")
        For i = eZ To lZ
            On Error GoTo 1:
            If Weekday(Worksheets("Jan").Range("A" & i).Value, 2) > 5 Then
            Worksheets("Jan").Range("K" & i).Value = "F"
            End If
        Next i
    End With
1:
    i = eZ

'Februar
    With Worksheets("Feb")
        For i = eZ To lZ
            On Error GoTo 2:
            If Weekday(Worksheets("Feb").Range("A" & i).Value, 2) > 5 Then
            Worksheets("Feb").Range("K" & i).Value = "F"
            End If
        Next i
    End With
2:
    i = eZ

'März
    With Worksheets("Mrz")
        For i = eZ To lZ
            On Error GoTo 3:
            If Weekday(Worksheets("Mrz").Range("A" & i).Value, 2) > 5 Then
            Worksheets("Mrz").Range("K" & i).Value = "F"
            End If
        Next i
    End With
3:
    i = eZ

'April
    With Worksheets("Apr")
        For i = eZ To lZ
            On Error GoTo 4:
            If Weekday(Worksheets("Apr").Range("A" & i).Value, 2) > 5 Then
            Worksheets("Apr").Range("K" & i).Value = "F"
            End If
        Next i
    End With
4:
    i = eZ


    Application.ScreenUpdating = True

Hat jemand eine Idee, wie ich auf allen 12 Monatstabellenblättern jeweils die folgende Prüfung realisien kann?

Code:
    With Worksheets("Apr")

        For i = eZ To lZ

            On Error GoTo 4:

            If Weekday(Worksheets("Apr").Range("A" & i).Value, 2) > 5 Then

            Worksheets("Apr").Range("K" & i).Value = "F"

            End If

        Next i

    End With

4:
 
Und wo liegt nun eigentich das Problem?
Kann man ansonsten davon ausgehen, dass du keinerlei Erfahrung in VBA hast?
 
Komisch....für gar keine Ahnung sieht der Code zu gut aus, aber irgendwie trotzdem nicht gut...wie eine optische Täuschung :-)

Nichts für ungut. Du hast es doch im ersten Teil eigentlich schon eingebaut. Einfach über alle Worksheets iterieren und deine Funktion einbauen.

For each ws in thisworkbook.worksheets ... und so weiter
 
  • Gefällt mir
Reaktionen: DerTiger
Zurück
Oben