Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Variable als unterschiedl. Konstanten definieren

Betrifft: Variable als unterschiedl. Konstanten definieren von: Maria
Geschrieben am: 19.08.2014 16:09:39

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

  

Betrifft: Du musst die Variablen indizieren von: NoNet
Geschrieben am: 19.08.2014 17:33:21

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


  

Betrifft: Ich pflege das bei 1er so geringen Konstanten-... von: Luc:-?
Geschrieben am: 20.08.2014 02:00:12

…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 :-?


  

Betrifft: AW: Ich pflege das bei 1er so geringen Konstanten-... von: Maria
Geschrieben am: 20.08.2014 09:59:10

Euch beiden vielen Dank!
Es klappt!

Gruß Maria


 

Beiträge aus den Excel-Beispielen zum Thema "Variable als unterschiedl. Konstanten definieren"