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

Forumthread: variable ansprechen

variable ansprechen
23.08.2016 10:59:08
Wolfgang
Hallo,
ich hoffe mir kann jemand bei meinem Problem helfen.
Ziel dieser Schleife ist, dass ich über den Array, die angeführten Variablenwerte auslese und anschließend in ein Tabellenblatt schreibe.
Leider funktioniert das so nicht, da der ausgegeben var_wert immer als string ausgewiesen wird.
Danke schon jetzt, für Eure Hilfe!
Grüße Wolfgang
Sub test()
atv_effberechnung_wizard = 100
atv2_effberechnung_wizard = 200
cafepuls_effberechnung_wizard = 300
alle_sender_effie = Array("atv", "atv2", "cafepuls")
zellename_blatt = "pl"
For x = 0 To 2
var_name = alle_sender_effie(x) & "_effberechnung_wizard" & zellename_blatt
var_wert = var_name
Sheets("Tabelle1").Cells(x + 1, 1).Value = alle_sender_effie(x)
Sheets("Tabelle1").Cells(x + 1, 2).Value = var_wert
Next x
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: variable ansprechen
23.08.2016 11:14:15
Werner
Hallo Wolfgang,
ich bin jetzt zwar nicht der VBA Experte und schon gar nicht bei Arrays, aber so wie ich das sehe ist deine Variable var_wert ein String.
Hier weißt du der Variablen var_name einen wert aus dem Array zu und verknüpfst ihn mit einem String, folglich ist die Variable dann eine String-Variable.
var_name = alle_sender_effie(x) & "_effberechnung_wizard" & zellename_blatt
Hier übergibst du den Wert der Variablen var_name an die Variable var_wert. Da der Wert aus var_name ein String ist wird var_wert eine String-Variable.
var_wert = var_name
So sehe ich das, lass aber weiter auf offen.
Gruß Werner
Anzeige
AW: variable ansprechen
23.08.2016 11:22:45
Wolfgang
Hallo Werner,
danke für deinen Input.
Genau das ist mein Problem, nur wie kann ich aus dem String diese Variable ansprechen.
Wie muss ich den String dimensionieren, damit das funktioniert?
Wenn es eine Möglichkeit gibt, wäre ich super dankbar für jeden Input.
Danke nochmals und Liebe Grüße
Wolfgang
Anzeige
AW: variable ansprechen
23.08.2016 11:20:45
ChrisL
Hi Wolfgang
Du kannst die einen Variablen-Namen nicht aus einem String zusammensetzen. In deinem Fall würde sich ein mehrdimensionales Array anbieten:
Sub test()
Dim ar(2, 1) As Variant
ar(0, 0) = "atv"
ar(0, 1) = 100
ar(1, 0) = "atv2"
ar(1, 1) = 200
ar(2, 0) = "cafeplus"
ar(2, 1) = 300
Range("A1:B3") = ar
' Alternative:
'For x = 0 To 2
'    Sheets("Tabelle1").Cells(x + 1, 1).Value = ar(x, 0)
'    Sheets("Tabelle1").Cells(x + 1, 2).Value = ar(x, 1)
'Next x
End Sub

cu
Chris
Anzeige
AW: variable ansprechen
23.08.2016 11:46:07
Daniel
Hi
es ist in VBA nicht so ohne weiteres möglich, eine Variable selbst "Variabel" anzusprechen, dh den Variablennamen aus weitern Variablen zusammenzusetzen und so auf den Variablenwert zuzugreifen.
eine einfache Möglichkeit, so etwas zu realiseren, wäre das Dictionary-Objekt, welches im Prinzip ein eindimensionales Array mit einem Freitext-index ist.
man erstellt dann ein dictionary und verwendet den vorgesehenen Variablennamen als Index:
dim dic as object
set dic = CreateObject("Scripting.Dictionary")
dic("atv_effberechnung_wizard") = 100
dic("atv2_effberechnung_wizard") = 200
dic("cafepuls_effberechnung_wizard") = 300
alle_sender_effie = Array("atv", "atv2", "cafepuls")
with Sheets("Tabelle1")
for x = 0 to 2
var_name = alle_sender_effi(x) & "_effberechnung_wizard"
.cells(x + 1, 1).value = alle_sender_effi(x)
.Cells(x + 1, 2).value = dic(var_name)
next
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Variablen im Tabellenblatt ansprechen


Schritt-für-Schritt-Anleitung

Um in Excel VBA auf Zellen in einem Tabellenblatt über Variablen zuzugreifen, kannst du die folgenden Schritte befolgen:

  1. Variablen definieren: Lege die gewünschten Variablen fest, die du später verwenden möchtest.

    Sub test()
       Dim atv_effberechnung_wizard As Integer
       Dim atv2_effberechnung_wizard As Integer
       Dim cafepuls_effberechnung_wizard As Integer
       atv_effberechnung_wizard = 100
       atv2_effberechnung_wizard = 200
       cafepuls_effberechnung_wizard = 300
  2. Array erstellen: Definiere ein Array mit den Namen der Variablen, die du ansprechen möchtest.

       Dim alle_sender_effie As Variant
       alle_sender_effie = Array("atv", "atv2", "cafepuls")
  3. Ziel-Tabellenblatt festlegen: Bestimme, in welches Blatt du die Werte schreiben möchtest.

       Dim zellename_blatt As String
       zellename_blatt = "pl"
  4. Schleife zur Ausgabe: Verwende eine Schleife, um die Werte in die Zellen des Tabellenblatts zu schreiben.

       Dim x As Integer
       For x = 0 To 2
           Dim var_name As String
           var_name = alle_sender_effie(x) & "_effberechnung_wizard"
           Sheets("Tabelle1").Cells(x + 1, 1).Value = alle_sender_effie(x)
           Sheets("Tabelle1").Cells(x + 1, 2).Value = Eval(var_name) 'Hier wird Eval verwendet
       Next x
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Die Variable wird als String ausgegeben.

    • Lösung: Stelle sicher, dass du die Variablen korrekt definierst und verwende Eval, um den Wert der Variablen zu erhalten.
  • Fehler: Zugriff auf Zellen funktioniert nicht.

    • Lösung: Überprüfe, ob das Blatt korrekt benannt ist und ob die Zellen existieren.

Alternative Methoden

Eine andere Möglichkeit, die du in Betracht ziehen kannst, ist die Verwendung eines Dictionary-Objekts. Damit kannst du Variablennamen als Schlüssel verwenden:

Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
dic("atv_effberechnung_wizard") = 100
dic("atv2_effberechnung_wizard") = 200
dic("cafepuls_effberechnung_wizard") = 300

Dann kannst du in der Schleife auf die Werte zugreifen:

For x = 0 To 2
    Dim var_name As String
    var_name = alle_sender_effie(x) & "_effberechnung_wizard"
    Sheets("Tabelle1").Cells(x + 1, 1).Value = alle_sender_effie(x)
    Sheets("Tabelle1").Cells(x + 1, 2).Value = dic(var_name)
Next x

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du Excel VBA nutzen kannst, um Werte in ein Tabellenblatt zu schreiben:

Sub Beispiel()
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    dic("atv_effberechnung_wizard") = 100
    dic("atv2_effberechnung_wizard") = 200
    dic("cafepuls_effberechnung_wizard") = 300

    Dim alle_sender_effie As Variant
    alle_sender_effie = Array("atv", "atv2", "cafepuls")

    Dim x As Integer
    For x = 0 To 2
        Dim var_name As String
        var_name = alle_sender_effie(x) & "_effberechnung_wizard"
        Sheets("Tabelle1").Cells(x + 1, 1).Value = alle_sender_effie(x)
        Sheets("Tabelle1").Cells(x + 1, 2).Value = dic(var_name)
    Next x
End Sub

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was Fehler minimiert.

  • Debugging: Setze Breakpoints und nutze die Debug.Print Anweisung, um den Wert von Variablen während der Ausführung zu überprüfen.

  • Dokumentation: Halte deinen Code gut dokumentiert, damit du und andere ihn in der Zukunft leichter verstehen können.


FAQ: Häufige Fragen

1. Kann ich Variablen in VBA dynamisch erstellen?
Nein, du kannst in VBA keine Variablen dynamisch erstellen, aber du kannst Arrays oder Dictionaries verwenden, um ähnliche Funktionalitäten zu erreichen.

2. Wie kann ich auf Zellen in einem anderen Tabellenblatt zugreifen?
Du kannst dies tun, indem du den Namen des Tabellenblatts in deinen Code einfügst, wie z.B. Sheets("Tabellenblattname").Cells(...).

3. Was ist der Unterschied zwischen einem Array und einem Dictionary?
Ein Array hat feste Indizes, während ein Dictionary Schlüssel-Wert-Paare verwendet, was eine flexiblere Handhabung von Daten ermöglicht.

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