VBA Code - Ansprache mehrerer Tabellenblätter
#1
Hallo zusammen,

ich habe mit eurer Hilfe nun den passenden VBA Code hinbekommen. Allerdings wird dieser aktuell nur auf ein Tabellenblatt angewendet.

Wie muss ich den Code verändern, wenn ich diesen auf mehrere Tabellenblätter gleichzeitig anwenden möchte?

Public Sub aaa()
Dim i As Long, strWert As String
With Worksheets("Test")
    For i = 5 To 5000
        If .Cells(i, "Q") <> "" Then
            If strWert = vbNullString Then
                strWert = .Cells(i, "Q")
            Else
                strWert = strWert & ", " & .Cells(i, "Q")
            End If
        End If
    Next i
    If Not strWert = vbNullString Then
        .Range("G3") = strWert
    End If
   
    For i = 5 To 5000
        If .Cells(i, "T") <> "" Then
            If strWert = vbNullString Then
                strWert = .Cells(i, "T")
            Else
                strWert = strWert & ", " & .Cells(i, "T")
            End If
        End If
    Next i
    If Not strWert = vbNullString Then
        .Range("G12") = strWert
    End If
   
End With
End Sub


Beispielsweise sollen auch die Tabellenblätter "Test1" und "Test3" angesprochen werden.

Eine Veränderung von With Worksheets("Test") auf With Worksheets("Test", "Test1", "Test3") erzeugt komischerweise einen Fehler.

Vielen Dank im Vorfeld!!
Top
#2
Hallo,

das hatten wir doch schon?
Und im Code hast du nach dem Ende der ersten For Schleife vergessen die Variable strWert wieder zu leeren. Das gab doch auch schon Probleme?

Code:
Public Sub aaa()
Dim i As Long, strWert As String, ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    Select Case ws.Name
        Case "Test", "Test1", "Test2"
            With ws
                For i = 5 To 5000
                    If .Cells(i, "Q") <> "" Then
                        If strWert = vbNullString Then
                            strWert = .Cells(i, "Q")
                        Else
                            strWert = strWert & ", " & .Cells(i, "Q")
                        End If
                    End If
                Next i
                If Not strWert = vbNullString Then
                    .Range("G3") = strWert
                End If
               
                strWert = ""
               
                For i = 5 To 5000
                    If .Cells(i, "T") <> "" Then
                        If strWert = vbNullString Then
                            strWert = .Cells(i, "T")
                        Else
                            strWert = strWert & ", " & .Cells(i, "T")
                        End If
                    End If
                Next i
                If Not strWert = vbNullString Then
                    .Range("G12") = strWert
                End If
            End With
        Case Else
    End Select
Next ws
End Sub

Gruß Werner

Hallo,

nach End Select muss die Variable strWert auch wieder geleert werden.
Code:
     End Select
     strWert =  ""
Next ws

Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • Lars1904
Top
#3
Hallo Werner,

habe deine zweite Nachricht erst jetzt gelesen, sorry!

Der Code sähe deiner Meinung nach so aus, richtig?

Public Sub aaa()
Dim i As Long, strWert As String, ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    Select Case ws.Name
        Case "Test1", "Test2", "Test3"
            With ws
                For i = 5 To 5000
                    If .Cells(i, "Q") <> "" Then
                        If strWert = vbNullString Then
                            strWert = .Cells(i, "Q")
                        Else
                            strWert = strWert & ", " & .Cells(i, "Q")
                        End If
                    End If
                Next i
                If Not strWert = vbNullString Then
                    .Range("G3") = strWert
                End If
               
                strWert = ""
               
                For i = 5 To 5000
                    If .Cells(i, "T") <> "" Then
                        If strWert = vbNullString Then
                            strWert = .Cells(i, "T")
                        Else
                            strWert = strWert & ", " & .Cells(i, "T")
                        End If
                    End If
                Next i
                If Not strWert = vbNullString Then
                    .Range("G12") = strWert
                End If
            End With
        Case Else
    End Select
    strWert = ""
Next ws
End Sub

leider funktioniert er so immer noch nur für Tabellenblatt "Test1"...

wo liegt der fehler?

Danke!!!
Top
#4
Hallo,

Punkt 1: du hast jetzt exact den gleichen Code nochmal eingestellt.
Punkt 2: liest du eigentlich was man dir schreibt? Ich hatte doch einen Code gepostet. Beachte bitte auch den Zusatz.

Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • Lars1904
Top
#5
Sorry! Ich war zu voreilig. Du hast recht...

Aber ich habe es jetzt mit deinem Hinweis hinbekommen! Vielen lieben Dank!

Nächste Mal lese ich wieder genauer.

Nochmals Danke!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste