Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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!!
Antwortento 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 Benutzer sagt Danke an Werner.M für diesen Beitrag:
  • Lars1904
Antwortento 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!!!
Antwortento 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 Benutzer sagt Danke an Werner.M für diesen Beitrag:
  • Lars1904
Antwortento 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!
Antwortento top


Gehe zu:


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