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

Forumthread: string in variable umwandeln

string in variable umwandeln
29.07.2014 13:58:02
ela
Hallo,
ich habe folgendes Problem.
Per Comboboxen lasse ich bestimmte Auswahlmöglichkeiten zu. Diese Auswahlmöglichkeiten stehen für variablennamen mit denen ich im programmablauf weiter arbeiten möchte, diese lese ich jedoch als String aus.
Wie kann ich diese Auswahlmöglichkeiten auslesen, damit sie in meinem Programm als Variablen und nicht als string erkannt werden?
Kann ich evtl den datentyp ändern? Und wenn ja auf welchen?
Oder ist es möglich diese Strings in variablen umzuwandeln bzw. das was zwischen den "" steht zu extrahieren?
Bsp: "bericht" -- bericht
viele grüße
ela

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Mit den Namen von Variablen als Text kannst ...
29.07.2014 14:12:30
Variablen
…du mit der AufrufMethode CallByName arbeiten, die in VBA nachträglich (als Fkt bzw fktsartig) implementiert wurde, ela.
Voraussetzung ist, dass diese Variablen Eigenschaften/Methoden eines Objektes sind, das du als 1.Parame­ter/Ar­gument angeben musst. Das kann ein Klassen-, bspw auch ein DokumentKlassenModul oder die Application, sein. Es fktioniert in Analogie zu den Property-Prozeduren unter Hinzunahme von Methoden (vbMethod als 3.Param/Arg).
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Mit den Namen von Variablen als Text kannst ...
29.07.2014 14:34:30
Variablen
Hi
wenn du auf Variablenwerte über einen String zugreifen willst, könntes du alternativ zu Lucs vorgschlagener Methode auch die Werte in ein Dictionary packen:
als statt:
Dim Bericht as String
Dim Anzahl as long
Dim Auswahl as String
Bericht = "Hallo Welt"
Anzahl = 2
Auswahl = Inputbox("Welchen Wert wollen sie sehen?")
Msgbox ?
dann folgendes
Dim meineVariablen as Object
Dim Auswahl as String
Set meineVariablen = CreateObject("Scripting.Dictionary")
meineVariablen("Bericht") = "Hallo Welt"
meineVariablen("Anzahl") = 2
Auswahl = Inputbox("Welchen Wert wollen sie sehen?")
Msgbox meineVariablen(Auswahl)
Gruß Daniel

Anzeige
Was der alles weiß
29.07.2014 16:29:46
Nepumuk
Zitat:
die in VBA nachträglich (als Fkt bzw fktsartig) implementiert wurde
Komisch, ich kenn das aus VB6.0 was 1998 herausgegeben wurde. Ein abgespecktes VB6.0 wurde anschließend eine der Funktionsbibliotheken in Excel 2000, welches 1999 auf den Markt kam. CallByName gab's also schon ein Jahr bevor es in VBA auftauchte.
Gruß
Nepumuk

Anzeige
Was soll das! Es ist schon lange in VBA, aber ...
30.07.2014 03:20:37
Luc:-?
…trotzdem nachträglich, da es ja nicht nach dem Schema der anderen beiden CallBy-Arten konstruiert wurde!
Dir, Nepumuk, muss ich ja wohl nicht sagen, dass es in manchen PgmierSprachen bis dato fehlt. In welcher es zuerst auftauchte, kannst du gern bei Wikipedia nachlesen, falls du die nicht mehr kennst. ;-]
Nebenbei, ich habe 10 Jahre eher als du mit Pgmieren begonnen, war dann aber jahrzehntelang mit GR-Projekt­Entwicklung befasst. Die Pgmm mussten dann Andere schreiben… ;-]
Ansonsten bin ich über deinen abschätzigen Tonfall not amused. Du magst ja über große Pgmierkenntnisse verfügen, aber die sind nicht immer das A und O, sondern eigene, originäre/elle Ideen. Und damit scheint es bei vielen deiner Zunft doch etwas zu hapern, sonst wäre wohl Einiges, was ich mir schon vor Jahren erarbeitet habe, längst bekannt…
Aber natürlich habt ihr ja andere Aufgaben und hier zu schreiben ist für so bedeutende Pgmierer ja nur ein Zeitvertreib aus/bei Langeweile…
Luc :-?

Anzeige
AW: Was soll das! Es ist schon lange in VBA, aber ...
30.07.2014 08:34:45
Nepumuk
Hääääääää?
CallByName in VBA und VB6.0 ist vollkommen identisch. Und das VB6.0 die Grundlage von VBA ist wirst du wohl nicht bestreiten, es benutzt die identischen Runtime-Bibliotheken.
Nebenbei, ich habe 10 Jahre eher als du mit Pgmieren begonnen
Wow, 1968 war ich gerade mal 10 Jahre alt, da kannte ich das Wort Computer noch gar nicht.
Gruß
Nepumuk

Anzeige
Neben dem zeitlichen, gibt's noch ein ...
31.07.2014 16:50:02
Luc:-?
…konzeptionelles „nachträglich“, Nepumuk,
und in der BasisSprache (damit ist nicht VB6.0 gemeint) von VBA scheint das wohl (wie in vielen Sprachen noch heute) gefehlt zu haben. Zumindest habe ich den Wikipedia-Artikel dahingehend interpretiert. Ursache dürfte die Nicht-Kompilierbarkeit sein, weil so etwas erst zur Laufzeit aufgelöst wdn kann.
Meine Bemerkung zur Pgmmierung bezog sich auf deine Bemerkung ggüber adis → 1980! Also folglich 1969/70 (mit 21-22), damals mit ZahlenCodes für (inzwischen längst „ausgestorbene“) KR → MOPS, FIPS, GIPS. Später musste ich noch PL/1 (mit ** statt ^, für GR; ansatzweise) erlernen. Ab ca 1997 habe ich mich um VBA (VB6.0-Basis) bemüht, nachdem kurz zuvor Basic, OpenScript und Lingo angesagt waren. Dazwischen lagen die Projektierungsjahre mit Beurteilung jeweiliger PseudoCode-Entwürfe.
Übrigens wirst du doch sicher zugeben, dass ein Beitrag, quasi als AW unter einen anderen gesetzt und dann vom Verfasser dieses anderen schon im Betreff in der der 3.Person sprechend, eine zumindest grobe Unhöflichkeit darstellt, sozusagen ein Affront! :-|
Gruß, Luc :-?

Anzeige
AW: Neben dem zeitlichen, gibt's noch ein ...
01.08.2014 20:35:29
Adis
Hallo
das Forum ist sehr interessant. Man kann sogar psychologische Studien machen.
1958 ist im Chinesischen Horoskop übrigens ein Erd Hase. Das ist nicht abwertend gemeint.
Wer sich damit auskennt weiss, das es nur die typischen Charaktereigenschaften beschreibt.
Auf ein Duell mit Nepumuk lege ich keinen Wert. Ihn kann ich nicht schlagen, er ist zu schnell...
Ein Tiger, mein Horoskop, amüsiert sich höchstens wenn ein Hase eine -350 kg- Raubkatze angreift.
Wo aber berechtigte Kritik im Spiel war, wie beim End Befehl, lasse ich mich auch belehren.
Gruss Adis

Anzeige
Mein Interessengebiet (in VBA) ist dem von ...
02.08.2014 03:52:43
...
…ProfiPgmierern wie Nepumuk nicht deckungsgleich, Adis;
und in und über deren Domänen würde ich auch nicht streiten. Aber ich kann natürlich auch so etwas nicht einfach auf sich beruhen lassen, zumal bei einem bestimmten Teilaspekt der Handhabung von VBA (über den ich schon mal mit ihm stritt) auch die Meinungen der Profis (zu recht!) divergieren.
Übrigens, von Horoskopen halte ich nichts, weder von europäischen noch chinesischen, wenn auch (wie so oft) ein Körnchen Wahrheit darin stecken mag, aber eben nicht auf der Grundlage ihrer astro(un­)logischen Basis. Dahinter mag nur falsch erinnertes und fehlinterpretiertes Restwissen der Präantike stecken. Da kann man dann auch gleich glauben, dass die Erde eine Scheibe sei… ;-]
Gruß, Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

String in Variable umwandeln in VBA


Schritt-für-Schritt-Anleitung

Um Strings in Variablen in VBA (Visual Basic for Applications) umzuwandeln, kannst du die Methode CallByName verwenden. Diese Methode erlaubt es dir, auf Variablen anhand ihrer Namen zuzugreifen, die als Strings gespeichert sind. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Definiere deine Variablen: Beginne mit der Definition der Variablen, die du verwenden möchtest.

    Dim Bericht As String
    Dim Anzahl As Long
  2. Setze Werte: Weise den Variablen Werte zu.

    Bericht = "Hallo Welt"
    Anzahl = 2
  3. Verwende CallByName: Nun kannst du die CallByName-Methode nutzen, um die Variablen mit ihrem Namen (als String) aufzurufen.

    MsgBox CallByName(Application, "Bericht", VbGet)
  4. Alternativer Zugriff über Dictionary: Du kannst auch ein Dictionary verwenden, um Variablen dynamisch zu verwalten.


Häufige Fehler und Lösungen

Ein häufiger Fehler ist, dass die Variablen nicht richtig erstellt oder die Namen falsch eingegeben werden. Hier sind einige Lösungen:

  • Falscher Variablenname: Überprüfe, ob der Name der Variablen genau mit dem übereinstimmt, was du im Code verwendest.
  • Typkonflikte: Achte darauf, dass der Datentyp der Variablen korrekt definiert ist. Wenn du beispielsweise Dim Bericht As String verwendest, stelle sicher, dass du auch einen String übergibst.

Alternative Methoden

Neben der CallByName-Methode kannst du auch einen Dictionary-Objekt verwenden, um Variablen zu speichern und darauf zuzugreifen:

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

meineVariablen("Bericht") = "Hallo Welt"
meineVariablen("Anzahl") = 2

Dim Auswahl As String
Auswahl = InputBox("Welchen Wert wollen Sie sehen?")
MsgBox meineVariablen(Auswahl)

Diese Methode ist besonders nützlich, wenn du viele Variablen dynamisch verwalten musst.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen können, das Konzept besser zu verstehen:

  1. Zugriff auf Variable mit CallByName:

    Dim Bericht As String
    Bericht = "Dies ist ein Bericht"
    MsgBox CallByName(Application, "Bericht", VbGet)
  2. Verwendung eines Dictionaries:

    Dim vars As Object
    Set vars = CreateObject("Scripting.Dictionary")
    vars("Name") = "Max"
    vars("Alter") = 30
    MsgBox vars("Name") & " ist " & vars("Alter") & " Jahre alt."

Tipps für Profis

  • Verwende Option Explicit: Aktiviere Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Nutze Typen effizient: Verwende die geeigneten Datentypen (z.B. Long, String), um die Leistung und Lesbarkeit deines Codes zu verbessern.
  • Dokumentiere deinen Code: Kommentiere deinen Code, um klarzustellen, was jede Variable und Methode bewirken soll.

FAQ: Häufige Fragen

1. Kann ich die Typen meiner Variablen nachträglich ändern?
Nein, der Typ einer Variablen ist zur Laufzeit festgelegt und kann nicht geändert werden. Du musst eine neue Variable des gewünschten Typs erstellen.

2. Was ist der Hauptunterschied zwischen CallByName und Dictionary?
CallByName ermöglicht den Zugriff auf Eigenschaften und Methoden, während ein Dictionary eine einfache Möglichkeit bietet, Schlüssel-Wert-Paare zu speichern und zu verwalten.

3. Ist CallByName in allen VBA-Versionen verfügbar?
Ja, die CallByName-Methode ist in allen Versionen von VBA verfügbar, jedoch ist sie besonders nützlich in Umgebungen wie Excel und Access.

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