Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1604to1608
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellennamen auslesen und in Tabelle schreiben

Tabellennamen auslesen und in Tabelle schreiben
02.02.2018 12:09:29
Gunnar
Hallo Zusammen,
ich möchte alle Tabellennamen, die mit einem "I" beginnen per vba auslesen und in einen bestimmten Zellbereich des aktiven Worksheets schreiben lassen. Dazu habe ich folgenden Code gebastelt, der aber bei set StartRow = 78 nach einem Objekt fragt.
Sub TabellenNamen()
If MsgBox("Makro starten?", vbYesNo + vbQuestion, _
"Frage") = vbYes Then GoTo Fortfahren Else GoTo EndeMakro
Fortfahren:
Dim ws As Worksheet
Dim i As Integer
Dim StartRow As Integer
Set StartRow = 78
For i = 1 To Worksheets.Count
If Left(ws.Name, 1) = "I" Then i = i + 1
If StartRow > 87 Then
Exit For
Else
ActiveSheet.Cells(StartRow, 19).Value = ws.Name
End If
End If
Next i
EndeMakro:
End Sub
Kann mir jemand weiterhelfen?
Danke & Gruß, Gunnar

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ohne Set. owT
02.02.2018 12:17:57
Rudi
AW: ohne Set. owT
02.02.2018 14:25:14
Gunnar
Hallo Rudi,
danke für den Tipp. Soweit klappt es jetzt schon mal.
Jetzt hängt er sich aber an dem zweiten "End If" auf und sagt "End If ohne If-Block".
Hast du da vielleicht auch noch 'ne Idee.
Danke & Gruß, Gunnar
AW: Tabellennamen auslesen und in Tabelle schreiben
02.02.2018 14:37:50
EtoPHG
Hallo Gunnar,
Korrigiere:
If Left(ws.Name, 1) = "I" Then
i = i + 1
Dann funktionierts.
Gruess Hansueli
AW: Tabellennamen auslesen und in Tabelle schreiben
02.02.2018 16:24:18
Gunnar
Hallo Hansueli,
danke für den Hinweis. Der gesamte Code sieht mittlerweile so aus:
Sub TabellenNamen()
If MsgBox("Makro starten?", vbYesNo + vbQuestion, _
"Frage") = vbYes Then GoTo Fortfahren Else GoTo EndeMakro
Fortfahren:
Dim ws As Worksheet
Dim i As Integer
Dim StartRow As Integer
StartRow = 78
For i = 1 To Worksheets.Count
If Left(ws.Name, 1) = "I" Then
i = i + 1
If StartRow > 87 Then
Exit For
Else
ActiveSheet.Cells(StartRow, 19).Value = ws.Name
End If
End If
Next i
EndeMakro:
End Sub
Er öffnet die MsgBox und hängt sich dann aber leider immer noch auf. Fehlermeldung "Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt."
Was mach ich falsch?
Danke & Gruß, Gunnar
Anzeige
AW: Tabellennamen auslesen und in Tabelle schreiben
02.02.2018 17:02:08
Werner
Hallo Gunnar,
so:
Public Sub aaa()
Dim startRow As Long
startRow = 78
If MsgBox("Makro starten?", vbYesNo + vbQuestion, _
"Frage") = vbYes Then
For Each Worksheet In ThisWorkbook.Worksheets
If startRow > 85 Then Exit For
If Left(Worksheet.Name, 1) = "I" Then
Cells(startRow, 19).Value = Worksheet.Name
startRow = startRow + 1
End If
Next Worksheet
End If
End Sub
Im Makro prüfst du startRow auf größer 85. Dieser Fall wird aber nie eintreffen, da du startRow mit 78 belegst und innerhalb des Makros der Wert von startRow nicht verändert wird.
Erklär doch mal, was du genau damit erreichen willst.
Gruß Werner
Anzeige
AW: Tabellennamen auslesen und in Tabelle schreiben
05.02.2018 10:58:14
Gunnar
Hallo Werner,
danke für die Antwort. Dein Hinweis bzgl. "startRow > 87" ist korrekt und kann natürlich nicht erreicht werden. Ich habe in der Datei maximal 10 Blätter, die mit "I" beginnen - das wollte ich damit eingrenzen (brauche ich wahrscheinlich ja aber nicht, weil er nach dem 10. ohnehin keins mehr findet - oder?
Das Makro an sich soll bewirken, dass die Namen aller Immobilienblätter, die mit "I" beginnen in dem aktiven Tabellenblatt im Zellbereich "S78:S87 bzw. cells.(startRow, 19)" der Reihe nach aufgelistet werden.
Deinen Code habe ich auch ausprobiert - der hängt sich in der Zeile "For Each Worksheet In ThisWorkbook.Worksheets" mit der Fehlermeldung "Fehler beim Kompilieren: Variable nicht definiert" auf. Verstehe ich nicht, weil Worksheet doch nicht nochmal extra zu deklarieren ist?
Wäre super, wenn du das nochmal anschauen könntest.
Danke & Gruß, Gunnar
Anzeige
AW: Tabellennamen auslesen und in Tabelle schreiben
05.02.2018 12:50:07
Werner
Hallo Gunnar,
dann hast du Option Explicit drin. Dann muss die Variable deklariert werden. Dann aber bitte nicht Worksheet als Variablenname, Worksheet ist ein VBA-Schlüsselwort und sollte dann nicht als Variablenname benutzt werden.
Option Explicit
Public Sub aaa()
Dim startRow As Long, ws As Worksheet
startRow = 78
If MsgBox("Makro starten?", vbYesNo + vbQuestion, _
"Frage") = vbYes Then
For Each ws In ThisWorkbook.Worksheets
If startRow > 85 Then Exit For
If Left(ws.Name, 1) = "I" Then
Cells(startRow, 19).Value = ws.Name
startRow = startRow + 1
End If
Next ws
End If
End Sub
Gruß Werner
Anzeige
AW: Tabellennamen auslesen und in Tabelle schreiben
05.02.2018 13:18:02
Gunnar
Hallo Werner,
tausend Dank, jetzt klappt's.
Viele Grüße
Gunnar
Gerne u. Danke für die Rückmeldung. o.w.T.
05.02.2018 13:20:36
Werner

156 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige