Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: fortlaufende VariablenNamen im VBA

fortlaufende VariablenNamen im VBA
22.06.2006 13:50:50
Manfred
Hallo,
ich hoffe ihr könnt mir wieder einmal bei einem Problem behilflich sein.
Wie kann ich Variablennamen mit einer Zahl am Ende benennen?
Beispiel:
Es läuft im Modul1 eine Schleife, in der untereinanderliegende Zellen ausgelesen werden sollen. Diese Schleife soll dann z.B. 10x durchlaufen. Nun möchte ich am Ende dieser Schleife über 10 Variablen verfügen, die
Datum1 (beinhaltet "16.01.")
Datum2 (beinhaltet "24.05.")
...
Datum10 (beinhaltet "31.12.")
oder ähnlich heißen? Ein anderes mal könnten aber auch 20 Schleifenurchläufe notig sein, weil soviele Felder mit einem Datum gefüllt sind. Die Anzahl der Schleifendurchläufe wird mit
Zeile=2
Do While Cells(Zeile,1)""
Datum = Cells(Zeile,1) 'hier sollen nun die benötigten Variablen erzeugt werden
Zeile = Zeile + 1
Loop
ermittelt.
Ich hoffe ich konnte euch das Problem verständlich machen. Sonst bitte nachfragen.
Gruss Manfred
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: fortlaufende VariablenNamen im VBA
22.06.2006 14:08:56
ChrisL
Hallo Manfred
Auf diese Weise geht es nicht. Aber du kannst eine Array-Variable (Datenfeld) verwenden. Schau mal ob du mit der folgenden Beschreibung zurecht kommst:
https://www.herber.de/xlfaq/xlbasics/main_var.htm
Gruss
Chris
Anzeige
AW: fortlaufende VariablenNamen im VBA
22.06.2006 14:35:09
Manfred
Hallo Chris,
das bringt mich nicht wirklich weiter. Vielleicht denke ich auch einfach wieder zu kompliziert und es gibt eine viel einfachere Lösung. Aber ich weiß das es wie beschrieben funktionieren muß, denn ich hatte früher schon mal eine derartige Lösung. Leider finde ich sie nicht mehr.
Gruss Manfred
Anzeige
AW: fortlaufende VariablenNamen im VBA
22.06.2006 14:52:21
u_
Hallo,
Variablennamen kannst du nicht zur Laufzeit definieren.
Du musst ein Datenfeld (Datum(1), Datum(2) etc.) nehmen
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
AW: fortlaufende VariablenNamen im VBA
22.06.2006 14:57:36
Manfred
Hallo u_
kannst du mich mit einem kleinen VBA unterstützen, wenn die Daten, die ich eingelesen haben möchte in der Spalte A (und nn Zellen) stehen?
Gruss Manfred
Anzeige
AW: fortlaufende VariablenNamen im VBA
22.06.2006 15:06:15
u_
Hallo,

Sub prcDaten()
Dim i As Long, iRows As Long
iRows = Cells(65536, 1).End(xlUp).Row
ReDim Daten(iRows)
For i = 1 To iRows
Daten(iRows) = Cells(i, 1)
Next i
End Sub

Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
Anzeige
AW: fortlaufende VariablenNamen im VBA
22.06.2006 15:10:58
Manfred
Danke
Gruss Manfred
AW: fortlaufende VariablenNamen im VBA
22.06.2006 15:03:29
fcs
Hallo Manfred,
hier ein kleines Beispiel. Dabei werden die Zellen mit Datum einem Range-Objekt zugewiesen. Aus diesem Objekt kann man die Werte mit Angabe von Zeilen und/oder Spaltennummer auslesen.

Sub Test()
Dim Datum As Range, wks As Worksheet
Set wks = ActiveSheet
Startzeile = 2
Zeile = Startzeile
With wks
Do While .Cells(Zeile, 1) <> ""
Zeile = Zeile + 1
Loop
Set Datum = .Range(.Cells(Startzeile, 1), .Cells(Zeile - 1, 1))
End With
'Test Datumswerte anzeigen
For i = 1 To Datum.Rows.Count
Datum(i).Select 'Zelle mit datum selectieren
MsgBox (Datum(i)) 'Inhalt anzeigen
Next i
End Sub

mfg
Franz
Anzeige
AW: fortlaufende VariablenNamen im VBA
22.06.2006 15:09:20
Manfred
Hallo Franz,
danke, das geht voll in die Richtung, in die ich möchte.
Gruss Manfred
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fortlaufende Variablen in VBA erstellen


Schritt-für-Schritt-Anleitung

Um fortlaufende Variablen in VBA zu erstellen, solltest Du stattdessen ein Array verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (DeineArbeitsmappe)“ und wähle „Einfügen > Modul“.

  3. Füge den folgenden Code ein:

    Sub prcDaten()
        Dim i As Long, iRows As Long
        iRows = Cells(65536, 1).End(xlUp).Row
        ReDim Daten(iRows)
    
        For i = 1 To iRows
            Daten(i) = Cells(i, 1) 'Hier werden die Daten ins Array eingelesen
        Next i
    End Sub
  4. Führe das Makro aus: Gehe zurück zu Excel und drücke ALT + F8, wähle prcDaten und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler: „Typ nicht definiert“
    Lösung: Stelle sicher, dass Du das richtige Datenfeld (Array) definiert hast. Achte darauf, dass Du das Feld mit ReDim korrekt initialisierst.

  • Fehler: „Index außerhalb des Bereichs“
    Lösung: Überprüfe, ob Du die Schleife korrekt eingerichtet hast und dass die Indizes im Array gültig sind.


Alternative Methoden

Wenn Du keine Arrays verwenden möchtest, kannst Du auch ein Range-Objekt nutzen. Hier ist ein Beispiel:

Sub Test()
    Dim Datum As Range, wks As Worksheet
    Set wks = ActiveSheet
    Dim Startzeile As Long
    Startzeile = 2
    Dim Zeile As Long
    Zeile = Startzeile

    With wks
        Do While .Cells(Zeile, 1) <> ""
            Zeile = Zeile + 1
        Loop
        Set Datum = .Range(.Cells(Startzeile, 1), .Cells(Zeile - 1, 1))
    End With

    'Test Datumswerte anzeigen
    For i = 1 To Datum.Rows.Count
        MsgBox (Datum(i)) 'Inhalt anzeigen
    Next i
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von Arrays in VBA:

  1. Zufällige Zahlen speichern:

    Sub Zufallszahlen()
        Dim Zahlen(1 To 10) As Integer
        Dim i As Integer
    
        For i = 1 To 10
            Zahlen(i) = Int((100 * Rnd) + 1) 'Zufallszahlen zwischen 1 und 100
        Next i
    End Sub
  2. Namen in einem Array speichern:

    Sub NamenSpeichern()
        Dim Namen(1 To 5) As String
        Namen(1) = "Anna"
        Namen(2) = "Bert"
        Namen(3) = "Clara"
        Namen(4) = "David"
        Namen(5) = "Eva"
    
        MsgBox Namen(3) 'Gibt "Clara" aus
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Setze am Anfang Deines Moduls Option Explicit, um sicherzustellen, dass Du alle Variablen deklarierst. Dies hilft, Fehler zu vermeiden.

  • Nutze die Debug.Print-Funktion: Um die Werte von Variablen während der Ausführung zu überprüfen, kannst Du Debug.Print verwenden, um in das Direktfenster zu drucken.

  • Verwende dynamische Arrays: Mit ReDim Preserve kannst Du die Größe eines Arrays zur Laufzeit ändern, ohne die bereits gespeicherten Daten zu verlieren.


FAQ: Häufige Fragen

1. Kann ich Variablennamen zur Laufzeit erstellen?
Nein, in VBA ist es nicht möglich, Variablennamen zur Laufzeit zu definieren. Stattdessen solltest Du Arrays verwenden.

2. Wie viele Elemente kann ein Array in VBA maximal haben?
Das Maximum für ein Array in VBA ist 65.536 Elemente, es sei denn, Du verwendest ein dynamisches Array mit ReDim, welches theoretisch unbegrenzt sein kann, solange genug Speicher verfügbar ist.

3. Was ist der Vorteil von Arrays gegenüber Variablen?
Arrays ermöglichen es Dir, mehrere Werte unter einem Namen zu speichern und sind dynamischer, was sie besonders nützlich macht, wenn die Anzahl der benötigten Elemente variiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige