Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
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

Variable als unterschiedl. Konstanten definieren

Variable als unterschiedl. Konstanten definieren
19.08.2014 16:09:39
Maria
Liebe Forumsgemeinde,
Ich fühle mich gerade ein wenig wie der "Ochs vorm Berg".
Ich habe in einem separaten Modul alle Konstanten definiert und hierin auch 3 Dateien/Dateinamen mit Aufträgen (constAuftr1, constAuftr2 und constAuftr3).
Nun möchte ich in einem Modul eine Routine für alle 3 Dateien durchführen => Schleife
Aber hier hakt es!

Dim i as integer
Dim DateiAuftr as String
For i = 1 to 3
DateiAuftr = "constAuftr" & i
Workbooks.open (pathAuftr & DateiAuftr)
Next

Das Problem ist das DateiAuftr als Variable erkannt wird und durch den Wert constAuftr1 ersetzt, dies aber nicht mehr als Konstante "erkannt" wird, sondern nach einer Datei mit diesem Namen gesucht wird (welche es nicht gibt...)
Natürlich kann ich auf die Schleife verzichten und 3 mal den Code eingeben, aber wie mache ich es richtig?
Vielen Dank für Tipps!
Gruß
Maria

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Du musst die Variablen indizieren
19.08.2014 17:33:21
NoNet
Hallo Maria,
zunächst einmal einige grundsätzliche Korrekturen :
- Eine Variable (=veränderbarer Platzhalter) ist keine Konstante (=unveränderbarer Platzhalter)
- mit DateiAuftr = "constAuftr" & i weist Du der Variablen DateiAuftr nur den Wert "constAuftr" gefolgt vom Wert der Variablen i zu (also z.B. den String "constAuftr1") - und NICHT den Wert der Variablen/Konstanten constAuftr1
Was Du benötigst, nennt man "indizierte Variable", also eine Variable, die eine Wertematrix (z.B. 3 Dateinamen) speichern kann, die man über den Index (die Zahl in Klammern) anspricht, in etwa so etwas :
Option Explicit
'Hier wird die indizierte Variable deklariert :
Dim strAuftr(1 To 3)
'Weitere Variablen :
Dim strPathAuftr As String
Sub Makro_Starten()
Wertezuweisung
WB_Oeffnen
End Sub
Sub Wertezuweisung()
'Hier werden der Variablen die einzelnen Werte/Dateinamen zugewiesen :
strAuftr(1) = "DateiEins.xlsx"
strAuftr(2) = "DateiZwei.xlsx"
strAuftr(3) = "DateiDrei.xlsx"
strPathAuftr = "C:\Daten\"
End Sub
Sub WB_Oeffnen()
Dim i As Integer
Dim DateiAuftr As String
For i = 1 To 3
DateiAuftr = strAuftr(i)
'Workbooks.Open (strPathAuftr & DateiAuftr)
MsgBox strPathAuftr & DateiAuftr
Next
End Sub
Starte nun das Makro Makro_Starten !
Salut und viel Erfolg, NoNet

Anzeige
Ich pflege das bei 1er so geringen Konstanten-...
20.08.2014 02:00:12
Luc:-?
…Anzahl so zu machen, Maria
(aber unbedingt NoNets Erläuterungen beachten!):
Const naAuftr$ = "dateiX|dateiY|dateiZ", pathAuftr$ = "…\"
Dim i As Integer, DateiAuftr As Variant
DateiAuftr = Split(naAuftr, "|")
For i = 0 To 2
Workbooks.Open pathAuftr & DateiAuftr(i)
…
Next i
Morrn, Luc :-?

AW: Ich pflege das bei 1er so geringen Konstanten-...
20.08.2014 09:59:10
Maria
Euch beiden vielen Dank!
Es klappt!
Gruß Maria

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige