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

Forumthread: VBA String in Variable umwandeln

VBA String in Variable umwandeln
02.05.2020 10:15:16
Thomas
Hallo Zusammen,
Ich habe folgendes Problem:
Ich habe im meinen Skript Variablen definiert und mit Werten beschrieben. Teilweise über ein Input in eine Userform und teilweise normal deklariert.
Jetzt will ich die normal deklarierten Variablen in einer Schleife aus einem Arry verwenden. Der Schleifenteil für die eingaben in die Userform funktioniert hierbei ohne Probleme (hier wird der Wert der Eingabe ausgegeben und nich der Name der Variable). Der zweite Teil geht leider noch nicht. Hier wird der Name der Variable und nicht der Wert der Variable ausgegeben. Jetzt weiß ich nicht wie ich den Typ der vorab definierten Variable "Variable01" umwandeln kann.
Kann mit hier jemand weiterhelfen? vielen Dank
Hier noch das minimalbeispiel:
Dim inputUserform1 As Integer    ' Irgendwo im skipt definiert
Dim Varible01 As Integer         ' Irgendwo im skipt definiert
Dim i As Integer, arrZeilenName, arrVarName
arrVarName = Array("inputUserform1", "Variable01")
arrZeilenName = Array("Handelstyp", "Symbol")
For i = LBound(arrZeilenName) To UBound(arrZeilenName)
With Worksheets("TJ").Range("A1:AZ2000")
Set findresult = .Find(arrZeilenName(i))
End With
' funktioniert ohne Problme
If Left(arrVarName(i), 5) = "input" Then
ActiveSheet.Cells(10, findresult.Column).Value = Userform_Dateneingabe(arrVarName(i))
Else
' geht leider noch nicht
ActiveSheet.Cells(10, findresult.Column).Value = arrVarName(i)
End If
Next i

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA String in Variable umwandeln
02.05.2020 12:43:48
Mullit
Hallo,
das geht so normalerweise nicht, ein String ist ein String und keine Variable mit Inhalt, zeig mal ihn hier, die Proc müsste man mal sehen....
Userform_Dateneingabe(arrVarName(i))

Gruß, Mullit
AW: VBA String in Variable umwandeln
02.05.2020 14:57:51
Thomas
@Mullit
was meinst du mit Proc?
Lustigerweise funktioniert genau diese Ausgabe
ActiveSheet.Cells(10, findresult.Column).Value = Userform_Dateneingabe(arrVarName(i))
analog zu
ActiveSheet.Cells(10, findresult.Column).Value = Userform_Dateneingabe.inputUserform1
Hier funktioniert genau dieser effekt, dass die Variable "inputUserform1" z.B. den Wert 2 hat und in der Zelle (10,X) der Wert 2 ausgegeben wird und nicht der Name des Strings "inputUserform1".
Kann mir jemand sagen warum dann der Zweite teil nicht geht?
Anzeige
AW: VBA String in Variable umwandeln
02.05.2020 15:47:42
Mullit
Hallo,
ja ich nahm an, das wäre eine Prozedur, scheint aber eine UserForm zu sein, mit der Klammernotation und Stringübergabe würdest Du ein Control ansprechen, bspw. eine Textbox, da funktioniert das, wenn Du allerdings nur den String aus dem Array übergibst, erscheint eben nur dieser String in der Zelle, wenn dann müsstest Du die Variable, da ja global und hoffentlich in einem Standardmodul deklariert, direkt übergeben:
ActiveSheet.Cells(10, findresult.Column).Value = Variable01
Andernfalls, wenn das auch noch nicht hinhaut und um weiterem Rätselraten vorzubeugen, hilft nur noch eines: Eine Beispielmappe...;-)
Gruß, Mullit
Anzeige
AW: VBA String in Variable umwandeln
02.05.2020 12:46:05
fcs
Hallo Thomas,
gibt es eine Fehlermeldung?
Es sollte eine Prüfung eingebaut werden, ob der Suchbegriff gefunden wurde.
Zusätzlich sollten bei der Find-Methode immer die Parameter Lookin und Lookat angegeben werden, da hier sonst andere Einstellungen aus einer vorherigen Suche verwendet werden.
Probiere es mal so:
Dim inputUserform1 As Integer    ' Irgendwo im skipt definiert
Dim Varible01 As Integer         ' Irgendwo im skipt definiert
Dim i As Integer, arrZeilenName, arrVarName
arrVarName = Array("inputUserform1", "Variable01")
arrZeilenName = Array("Handelstyp", "Symbol")
For i = LBound(arrZeilenName) To UBound(arrZeilenName)
With Worksheets("TJ").Range("A1:AZ2000")
Set findresult = .Find(What:=arrZeilenName(i), LookIn:=xlValues, _
lookat:=xlPart) 'ggf.xlwhole statt xlPart)
End With
' funktioniert ohne Problme
If Not findresult Is Nothing Then
If Left(arrVarName(i), 5) = "input" Then
ActiveSheet.Cells(10, findresult.Column).Value = Userform_Dateneingabe(arrVarName(i) _
)
Else
' geht leider noch nicht
ActiveSheet.Cells(10, findresult.Column).Value = arrVarName(i)
End If
End If
Next i
End Sub

LG
Franz
Anzeige
AW: VBA String in Variable umwandeln
02.05.2020 14:48:14
Thomas
@Franz
Danke für den Hinweis mit der Suche. Ich werde das so ergänzen. Jedoch hat die Suche ohne Probleme mit dem gewünschten Ergebnis funktioniert. Problematisch ist eher diese Zeile:
arrVarName = Array("inputUserform1", "Variable01")
und
ActiveSheet.Cells(10, findresult.Column).Value = arrVarName(i)
Hier wird dies Ausgabe "inputUserform1" und "Variable01" in Zelle (10,X) geschrieben. Nehmen wir an, die Variabele01 hatden Wert 1, hätte ich gerne in der Zelle (10,X) nicht "Variable01", sondern den Wert der Variable --> 1.
Anzeige
AW: VBA String in Variable umwandeln
03.05.2020 09:50:23
Daniel
Hi
Dann ohne Anführungszeichen um die Variable:
arrVarName = Array("inputUserform1", Variable01)

Alles was innerhalb von Anführungszeichen steht, ist immer Freitext und wird nicht als VBA-Coder Oder Variable erkannt.
Gruß Daniel
AW: VBA String in Variable umwandeln
06.05.2020 17:02:16
Thomas
@Daniel
Vielen Dank!
Manchmal ist es dann doch so trivial ;)... hat so funktioniert wie ich erwartet habe
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

VBA String in Variable umwandeln


Schritt-für-Schritt-Anleitung

Um eine VBA String Variable in den Wert einer anderen Variable umzuwandeln, kannst du folgende Schritte befolgen:

  1. Variablen deklarieren:

    Dim inputUserform1 As Integer
    Dim Variable01 As Integer
  2. Werte zuweisen:

    inputUserform1 = 2
    Variable01 = 1
  3. Arrays erstellen:

    Dim arrVarName As Variant
    Dim arrZeilenName As Variant
    arrVarName = Array("inputUserform1", "Variable01")
    arrZeilenName = Array("Handelstyp", "Symbol")
  4. Schleife zur Verarbeitung:

    Dim i As Integer
    For i = LBound(arrZeilenName) To UBound(arrZeilenName)
       ' ...
    Next i
  5. Wertzuweisung: In der Schleife musst du sicherstellen, dass du die Variablen referenzierst:

    If Left(arrVarName(i), 5) = "input" Then
       ActiveSheet.Cells(10, findresult.Column).Value = Userform_Dateneingabe(arrVarName(i))
    Else
       ActiveSheet.Cells(10, findresult.Column).Value = Evaluate(arrVarName(i))
    End If

Häufige Fehler und Lösungen

  • Fehler: Der Name der Variablen wird ausgegeben, nicht der Wert

    • Lösung: Stelle sicher, dass du die Evaluate-Funktion verwendest, um den Wert der Variable zu erhalten. Ansonsten wird der Name der Variablen als String ausgegeben.
  • Fehler: "Typ nicht definiert"

    • Lösung: Überprüfe, ob die Variablen ordnungsgemäß deklariert wurden. Die Verwendung von Dim ist wichtig, um den Typ der Variablen festzulegen.

Alternative Methoden

Eine alternative Methode besteht darin, die Variablen ohne Anführungszeichen im Array zu verwenden. Dadurch wird die Variable als solche erkannt:

arrVarName = Array(inputUserform1, Variable01)

So wird der tatsächliche Wert der Variablen in die Zelle geschrieben, anstatt den Namen als String.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die VBA Variable in String umwandeln kannst:

Dim inputUserform1 As Integer
Dim Variable01 As Integer
inputUserform1 = 5
Variable01 = 10

Dim arrVarName As Variant
arrVarName = Array("inputUserform1", "Variable01")

Dim i As Integer
For i = 0 To UBound(arrVarName)
    ActiveSheet.Cells(i + 1, 1).Value = Evaluate(arrVarName(i))
Next i

In diesem Beispiel wird der Wert der Variablen in die Zellen A1, A2, usw. geschrieben.


Tipps für Profis

  • Verwendung von VBA Evaluate: Diese Funktion ist sehr nützlich, um den Wert einer Variable, die als VBA String gespeichert ist, zu erhalten. Stelle sicher, dass die Variablen global deklariert sind, um die besten Ergebnisse zu erzielen.

  • Debugging: Nutze Debug.Print, um die Werte der Variablen während der Ausführung zu überprüfen. Dies hilft, Fehler schnell zu identifizieren.


FAQ: Häufige Fragen

1. Wie kann ich eine Integer-Variable in eine String-Variable umwandeln? Du kannst die Funktion CStr verwenden, um eine Integer-Variable in eine String-Variable umzuwandeln:

Dim zahl As Integer
Dim text As String
zahl = 10
text = CStr(zahl)

2. Was ist der Unterschied zwischen Dim ... As String und Dim ... As Text? In VBA wird Dim ... As String verwendet, um eine Zeichenkette zu deklarieren. Dim ... As Text existiert nicht in VBA, daher ist es wichtig, die richtige Typdefinition zu verwenden.

3. Wie kann ich eine Excel-Variable in einen String umwandeln? Du kannst die CStr-Funktion verwenden, um den Wert einer Excel-Variable in einen String umzuwandeln:

Dim wert As Variant
wert = Range("A1").Value
Dim strWert As String
strWert = CStr(wert)

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