Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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
"Liste" mit Variablen in Makro abarbeiten?
09.09.2023 14:14:21
Frank Dreier
Hallo Leute,

Ich würde gerne eine vorgegebene Liste mit definierten Variablen in einem Makro abarbeiten. Der Vorteil ist: Man braucht den Code nur einmal und die Variablen sind nur einmal definiert.
Ich schreibe mal als "code" einfach hin was ich gerne haben möchte.

Dim a as string
a="Butter"

ActiveWorkbook.SaveAs Filename:= _
"C:\" & a & ".xlsb" _
, FileFormat:=xlExcel12, CreateBackup:=False

Es wird also "C:\Butter1.xlsb" gespeichert, das klappt soweit. Wie kann ich nun mit einer "Liste" weitere definierten Variablen (z.B. Butter, Honig, Brot) abspeichern?

Geht das mit einer Art Schleife? Wie Bringt man dann Excel bei, dass beim 2. Mal ein anderer Wert als a="Butter" genommen werden soll (hier: b="Honig"?)?

Hier mal ein Versuch:

Dim a as string
a="Butter"

Dim b as string
b="Honig"

Dim C as string
c="Brot"

for i = 1 to 3

ActiveWorkbook.SaveAs Filename:= _
"C:\" & a & ".xlsb" _
, FileFormat:=xlExcel12, CreateBackup:=False

next

-Damit speichert er nur a (also "Butter") dreimal ab. Wie müsste ich den Code ändern damit der beim 1. Durchlauf: "Butter", beim 2. Durchlauf "Honig" und beim 3. Durchlauf "Brot" nimmt? Klar, ich könnte den kompletten code 3 mal aufschreiben, aber genau das will ich ja vermeiden.

Hat Jemand eine Idee?

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Liste" mit Variablen in Makro abarbeiten?
09.09.2023 14:51:04
Oberschlumpf
Hi Frank ,

hier ein einfaches Bsp mit einer eindimensionalen Array-Variablen.
Du weißt noch nicht, was eine Array-Variable ist? Informier dich bei Google.



Sub Test()

Dim liIdx As Integer, larZutaten() 'Tipp: Variablen nicht einfach a oder b nennen, sondern einen sinnvollen Namen vergeben

larZutaten = Array("Butter", "Honig", "Brot") 'nach Belieben erweiterbar

For liIdx = 0 To UBound(larZutaten)
ActiveWorkbook.SaveAs Filename:= "C:\" & larZutaten(liIdx) & ".xlsb" , FileFormat:=xlExcel12, CreateBackup:=False
Next

End Sub

Hilfts?

Ciao
Thorsten
Anzeige
"Liste"... Vielen Dank!
09.09.2023 19:12:47
Frank Dreier
Hallo Thorsten, ja, das Array, so hieß es, danke Dir.

Ich habe das an einer stelle anders gelöst, völlig verrückt. Ich habe in A1: Butter, A2: Honig, A3: Brot geschrieben und dann mit "i" von der For Schleife Die Abfrage mit " Range("I" & i).select z.b. gelöst - ich musste dann immer in das Fenster mit den Zellbezügen springen...

Deine Methode ist das was ich gesucht habe. Habe ich schon weitestgehend implementiert und es funktioniert auch. Wäre ich nie drauf gekommen das so zu schreiben. Vielen Dank Thorsten!
"Liste"... Vielen Dank!
09.09.2023 19:31:46
Oberschlumpf
Hi Frank,

deine Variante mit Range("I" & i) ist aber die bessere Lösung als meine mit = Array(...)!

Denn du hast ja in Tabellen (nicht nur testweise "Butter,"Honig",Brot,usw) schon alle (Zell)Werte, die du verarbeiten willst.
Bei = Array(...) musst du ja genau all diese Zellwerte entweder "hart reinschreiben" (wie in meinem Bsp) oder eben genau so einen Bezug zur Tabelle mit Range(...) herstellen.

Warum also nicht gleich direkt die Zellen abfragen?
Du musst bei Range("I" & i).select nur das select weglassen, und anstelle dessen Value verwenden!
(auf Range(...).Select kann man in VBA zu 99% verzichten)

Wieder n kleines Bsp:

deine Tabelle mit diesen Werten in den Zellen (z Bsp):
A1 = Brot
A2 = Zucker
A3 = Honig
A4 = Butter



Sub neuerTest()

Dim lloRow As Long 'mein lloRow ist dein i, wie gesagt, immer sinnvolle Namen für Variablen verwenden!

For lloRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row 'mit Cells(row... wird nur bis zur letzten, benutzten Zeile in Spalte 1 (A) die Schleife durchlaufen; hier im Bsp = Zeile 4
ActiveWorkbook.SaveAs Filename:= "C:\" & Range("A" & lloRow).Value & ".xlsb" , FileFormat:=xlExcel12, CreateBackup:=False
Next

End Sub


So einfach kann's gehen! :-)

Hilfts?

Ciao
Thorsten
Anzeige
"Liste" mit Variablen in Makro abarbeiten?
09.09.2023 15:22:03
onur
Google mal nach "VBA Arrays" - vielleicht fällt dann der Froschen....
danke, dass du mich unterstützt^^ :-) owT
09.09.2023 15:25:13
Oberschlumpf
danke, dass du mich unterstützt^^ :-) owT
09.09.2023 15:26:36
onur
Schon wieder mal.... :)
danke, dass du mich unterstützt^^ :-) owT
09.09.2023 15:28:41
Oberschlumpf
ähh..diesma wars von mir ironisch gemeint :-) ca 30 minuten nach meiner Idee kommt von dir...eigtl das Gleiche...nur ohne Code :-)
danke, dass du mich unterstützt^^ :-) owT
09.09.2023 15:30:43
onur
Hatten wir das nicht gestern oder so erst, dass sich zwei Leute gleichzeitig an eine Antwort machen, aber der eine etwas früher auf "Senden" klickt?
danke, dass du mich unterstützt^^ :-) owT
09.09.2023 15:33:23
onur
Ich hatte nur nach einer passende Seite für den Link gesucht, hab mich dann für eine allgemeine Google-Suche entschieden.
danke, dass du mich unterstützt^^ :-) owT
09.09.2023 15:33:04
Oberschlumpf
ok, das is wohl wahr...aber hast du wirklich 30 Minuten (oder länger) benötigt, um a) deine doch sehr kurze Antwort zu formulieren und b) diese dann auch abzuschicken? :-)
aber ok....es is so wie es is :-)
Anzeige
danke, dass du mich unterstützt^^ :-) owT
09.09.2023 15:35:08
onur
Das war aber keine halbe Stunde - ich glaube, ich habe deine Antwort einfach übersehen. Sorry !

107 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige