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: Wie Code für Schleife anpassen?
#1
Moinsen!

Irgendwie sehe ich grad vor lauter Bäumen den Wald nicht.

Ich habe mal in einer Excel Datei ein "Mini-Makro" verwendet, um einem Kollegen das leben etwas leichter zu machen. Wie dem dann so ist kommen sie irgendwann wieder und wollen mehr ...

Der Codeschnipsel den ich seinerzeit verwendet habe, hat einfach den Eintrag in einer Zelle ausgelesen und diesen hergenommen und als Name für die Tabelle gesetzt.
Code:
tbl_1.Name = Worksheets(tbl_0.Name).Cells(22, 1).Value

Wie kann ich denn nun das ganze in eine Schleife packen ?
Ich soll das ganze nun für 20 Tabellenblätter machen und irgendwie macht es grad nicht so richtig klick. Mein Ansatz war dieser ...
Code:
Sub versuch()
    Dim i As Long ' Zaehler fuer Tabellennummer
    Dim z As Long ' Zeilenzaehler
    Dim NeuerName As String ' Name Tabelle
   
    For i = 1 To 20
        NeuerName = "tbl_" & i
        NeuerName.Name = Worksheets(tbl_0.Name).Cells(z, 1).Value
        z = z + 1
    Next
End Sub

Der funktioniert jedoch nicht.
Da noch einige anderen Sachen passieren sollen außer dem umbenennen, will ich das unbedingt in einer Schleife haben. Kann mich mal bitte jemand in die richtige Richtung schubsen …. 

Vielen Dank!

Gruß 
Gordon
Antwortento top
#2
Hallo Gordon,

anscheinend verwendest Du in Deinem Code den technischen Tabellennamen, also den, der im VBE vor der Klammer steht.

Diesen kann man m.W. nicht einfach zusammensetzen und schon gar nicht so, wie es in Deinem Ansatz steht.

Falls die Blattnamen, also die in in der Klammer stehen und im Registertab unten angezeigt werden auch so heißen, kannst Du es mit u.a. (ungetestete) Makro probieren.
Ansonsten wäre das Hochladen Deiner Mappe mal sinnvoll.

PS: Bei den technischen Namen musst Du nicht zusätzlich noch Worksheets schreiben.
Code in die Zwischenablage
Sub versuch()
    Dim i As Long ' Zaehler fuer Tabellennummer
    Dim z As Long ' Zeilenzaehler
 
    For i = 1 To 20
        z = z + 1
        Sheets("tbl_" & i).Name = tbl_0.Cells(z, 1).Value
    Next
End Sub
viele Grüße aus Freigericht
Karl-Heinz
Antwortento top
#3
Hallöchen,

den Codenamen eines Tabellenblattes kann man schon zusammensetzen, hier mal der Ansatz. Es sollte natürlich auch zwei Tabellen mit den Codenamen Tabelle1 und Tabelle2 in der Mappe geben.

Code:
Sub test()
Dim iCnt%
For iCnt = 1 To 2
MsgBox ActiveWorkbook.VBProject.VBComponents("Tabelle" & iCnt).Name
Next
End Sub

Wenn man die Codenamen ändert, muss man genau wie bei den "normalen" Tabellennamen aufpassen, dass keine Doppelungen entstehen könnten. Das geht nicht, in dem Fall läuft der Code auf einen Fehler..
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#4
(24.07.2020, 17:03)schauan schrieb: Hallöchen,

den Codenamen eines Tabellenblattes kann man schon zusammensetzen, hier mal der Ansatz. Es sollte natürlich auch zwei Tabellen mit den Codenamen Tabelle1 und Tabelle2 in der Mappe geben.

Code:
Sub test()
Dim iCnt%
For iCnt = 1 To 2
MsgBox ActiveWorkbook.VBProject.VBComponents("Tabelle" & iCnt).Name
Next
End Sub

Hi Andre
man muss wohl den Zugriff auf die VBComponents zulassen ?
Und ob man davon ausgehen kann, dass es so eingestellt ist beim Anwender? Eher nicht.
Ist eine typische Falle für Entwickler, welche das "natürlich" immer freigeschaltet haben.

Gruß Jeanie
Antwortento top
#5
Hi Jeanie,

ja, so ist es Sad Ausgehen kann man davon nicht, standardmäßig ist der entsprechende Haken nicht gesetzt.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top


Gehe zu:


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