Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variablenname dynamisch zusammensetzen

Forumthread: Variablenname dynamisch zusammensetzen

Variablenname dynamisch zusammensetzen
13.07.2008 15:48:00
Florian
Hallo,
ich habe folgendes Problem.
Ich mache via Excel VBA einen Update auf eine Access Datenbank und zwar auf 25 Felder mit Datentyp Boolean:
TGR01, TGR02, ... , TGR25
Im Excel ermittle ich für alle 25 einen entsprechenden Wert (True/False).
Im Programm möchte ich die Variablennamen hierfür dynamisch zusammensetzen :
also z.B. TGR(i)=True
die Variable i (String-Variable) wird zuvor im Programm gefüllt, z.B. mit "01"
Das Resultat soll also sein: TGR01 = True
So funktioniert das aber leider nicht :-(
kann mir hier jemand auf die Sprünge helfen?
Im Voraus mal vielen Dank!
Florian

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablenname dynamisch zusammensetzen
13.07.2008 15:55:00
Florian
Testbeispiel:

Sub Test()
Dim TGR("01" To "25") As Boolean
Dim i As String
i = "01"
TGR(i) = True
MsgBox TGR01
End Sub


AW: Variablenname dynamisch zusammensetzen
13.07.2008 15:58:36
ransi
HAllo Florian
Erstell ein Datenfeld, Typ Boolean.
Dann hast du eine Variable die du über eine Zähler indizieren kannst.
Und dann so:
Option Explicit


Public Sub test()
Dim TGR(24) As Boolean
Dim I As Integer
For I = 0 To 24
    TGR(I) = True
Next
End Sub


ransi

Anzeige
oder mit einem Dictionary
13.07.2008 16:13:03
ransi
HAllo
Alternative evtl. so:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit


Public Sub test()
Dim MyDic 'as Dictionary
Dim I As Integer
Dim Kys
Dim Itms
Set MyDic = CreateObject("Scripting.Dictionary")
'Füllen
For I = 1 To 25
    MyDic.Add key:="TRG" & Format(I, "00"), Item:=True
Next
Kys = MyDic.keys
Itms = MyDic.items
MsgBox MyDic("TRG08") 'Auslesen(Direkt)
MsgBox Itms(7) 'auslesen(über index)

MyDic("TRG08") = False 'Ändern

MsgBox MyDic("TRG08") 'Wieder auslesen(Direkt)
MsgBox Itms(7) ''Wieder auslesen(über index)
End Sub

ransi

Anzeige
AW: oder mit einem Dictionary - Ergänzung
13.07.2008 17:56:45
Erich
Hi Ransi,
eine kleine Ergänzung:
Nach dem Ändern:
MyDic("TRG08") = False 'Ändern
sollte man vor einer Anzeige über Index das Array Itms aktualisieren mit
Itms = MyDic.items
Danach zeigt
MsgBox Itms(7)
den neuen Wert.
Sonst enthält Itms nur die Werte vor der Änderung.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Zusammensetzen von Variablennamen in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen Variablenname in Excel VBA dynamisch zusammenzusetzen, kannst Du die folgenden Schritte befolgen:

  1. Erstelle ein Array für die Boolean-Werte:

    Dim TGR(1 To 25) As Boolean
  2. Verwende eine Schleife zur Indizierung:

    Dim i As Integer
    For i = 1 To 25
       TGR(i) = True ' oder False je nach Bedarf
    Next i
  3. Um einen Variablennamen dynamisch zu erstellen, kannst Du die Indizes verwenden:

    MsgBox TGR(1) ' Gibt den Wert von TGR(1) aus

Durch diese Methode kannst Du vba string und zahl zusammensetzen, um auf die jeweiligen Werte zuzugreifen.


Häufige Fehler und Lösungen

  • Fehler: "Variable nicht definiert"
    Stelle sicher, dass die Variablen korrekt deklariert sind. Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind.

  • Fehler: Zugriff auf TGR(i)
    Wenn Du versuchst, TGR(i) zu verwenden, während i als String deklariert ist, musst Du sicherstellen, dass i als Integer deklariert ist.


Alternative Methoden

Eine alternative Methode besteht darin, ein Dictionary zu verwenden. Dies ermöglicht eine flexiblere Handhabung von dynamischen Variablennamen.

Dim MyDic As Object
Set MyDic = CreateObject("Scripting.Dictionary")

Dim i As Integer
For i = 1 To 25
    MyDic.Add "TGR" & Format(i, "00"), True
Next i

MsgBox MyDic("TGR08") ' Gibt True zurück

Mit dieser Methode kannst Du namen zusammensetzen und die Werte einfach verwalten.


Praktische Beispiele

Hier sind einige praktische Beispiele, die Du ausprobieren kannst:

  • Beispiel mit Boolean-Werten:

    Sub BeispielBoolean()
       Dim TGR(1 To 25) As Boolean
       Dim i As Integer
       For i = 1 To 25
           TGR(i) = (i Mod 2 = 0) ' Setze True für gerade Indizes
       Next i
       MsgBox TGR(2) ' Gibt True zurück
    End Sub
  • Beispiel mit Dictionary:

    Sub BeispielDictionary()
       Dim MyDic As Object
       Set MyDic = CreateObject("Scripting.Dictionary")
       Dim i As Integer
       For i = 1 To 25
           MyDic.Add "TGR" & Format(i, "00"), False
       Next i
       MyDic("TGR05") = True
       MsgBox MyDic("TGR05") ' Gibt True zurück
    End Sub

Durch diese Beispiele kannst Du lernen, wie Du excel vba string zusammensetzen kannst, um deine Programmierung zu optimieren.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft, mögliche Fehler bei der Variablendeklaration zu vermeiden.
  • Nutze Arrays und Dictionaries: Diese Strukturen sind effizienter und flexibler, wenn es darum geht, große Mengen an Daten zu verwalten.
  • Dokumentiere Deinen Code: Dies ist besonders wichtig, wenn Du dynamische Variablennamen verwendest, um den Überblick zu behalten.

FAQ: Häufige Fragen

1. Wie kann ich Variablennamen in C# dynamisch erstellen?
In C# gibt es keine direkte Entsprechung zu dynamischen Variablennamen wie in VBA. Stattdessen kannst Du Dictionaries oder Maps verwenden, um ähnliche Funktionalitäten zu erreichen.

2. Was ist der Vorteil von Dictionaries in VBA?
Dictionaries ermöglichen es Dir, Schlüssel-Wert-Paare zu speichern und bieten eine flexiblere Handhabung von Daten, insbesondere wenn Du dynamische Namen verwenden möchtest.

3. Wie kann ich sicherstellen, dass meine Variablen korrekt deklariert sind?
Verwende Option Explicit am Anfang Deiner Module, um sicherzustellen, dass alle Variablen deklariert sind, bevor Du sie verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige