Div. Möglichkeiten
26.06.2016 16:10:37
Michael
Hi zusammen,
anbei Datei mit mehreren Möglichkeiten...
Der Punkt ist, daß die Eingabe einer Vielzahl von Variablen/Werte-Paaren immer grätzig ist.
Dazu bietet es sich an, zumindest während der Entwicklung, ein Tabellenblatt vorzuhalten, in dem diese Werte-Zuordnungen erfaßt werden.
Das Makro zur Zuordnung ist höchst einfach:
Option Explicit
Sub FindVar()
' in Tabelle1 (FindVar) ********
Dim c As Range
Dim varSuch$
Dim Y
varSuch = Range("E2").Text
If varSuch = "" Then Exit Sub
Set c = Range("B:B").Find(varSuch, , xlValues, xlWhole, , , True)
If Not c Is Nothing Then
Y = c.Offset(, 1)
Else
Y = varSuch & " nicht gefunden."
End If
MsgBox Y
End Sub
Im zweiten Blatt finden sich zwei Formelblöcke, um direkt VBA-Code für Arrays bzw. ein Dictionary zu erzeugen.
Die Makros zum Finden sehen denn so aus:
Option Explicit
'in Tabelle2 (ArrayVar) *********
Sub ArrayVar()
Dim myVar$(), myInhalt(), myNr
Dim Y
ReDim myVar(1 To 12): ReDim myInhalt(1 To 12)
myVar(1) = "collBeg": myInhalt(1) = "Hi"
myVar(2) = "collAb": myInhalt(2) = "Ciao"
myVar(3) = "Aus_Ab": myInhalt(3) = "Baba"
myVar(4) = "NordBeg": myInhalt(4) = "Moin, moin"
myVar(5) = "Aus_Beg": myInhalt(5) = "Servus"
myVar(6) = "CH_Ab": myInhalt(6) = "Max Frisch"
myVar(7) = "US_Beg": myInhalt(7) = "Hi"
myVar(8) = "EN_Beg": myInhalt(8) = "Hello"
myVar(9) = "US_Ab": myInhalt(9) = "take care"
myVar(10) = "EN_Ab": myInhalt(10) = "Bye"
myVar(11) = "BayBeg": myInhalt(11) = "Grüß Gott"
myVar(12) = "BayAb": myInhalt(12) = "Pfiadi"
Y = InputBox("Deine Variable?", , myVar(1))
myNr = Application.Match(Y, myVar, 0)
If Not IsError(myNr) Then
If myVar(myNr) = Y Then
Y = myInhalt(myNr)
Else
Y = myVar(myNr) & " <> " & Y
End If
Else
Y = Y & "abgebrochen oder nicht gefunden."
End If
MsgBox Y
End Sub
Sub DicVar()
Dim D As Object
Dim Y As Variant
Set D = CreateObject("Scripting.Dictionary")
D("collBeg") = "Hi"
D("collAb") = "Ciao"
D("Aus_Ab") = "Baba"
D("NordBeg") = "Moin, moin"
D("Aus_Beg") = "Servus"
D("CH_Ab") = "Max Frisch"
D("US_Beg") = "Hi"
D("EN_Beg") = "Hello"
D("US_Ab") = "take care"
D("EN_Ab") = "Bye"
D("BayBeg") = "Grüß Gott"
D("BayAb") = "Pfiadi"
Y = InputBox("Deine Variable?", , "collBeg")
If Not IsError(Y) Then
If D.exists(Y) Then
Y = D(Y)
Else
Y = Y & " nicht gefunden."
End If
Else
Y = "abgebrochen"
End If
MsgBox Y
End Sub
Datei zum Testen: https://www.herber.de/bbs/user/106543.xlsm
Der mittlere Codeschnipsel hat den Nachteil, daß Groß- und Kleinschreibung NICHT berücksichtigt wird; entweder man verwendet strikt unterschiedliche Variablennamen, z.B. mit Nummern Var1, Var2 usw. oder läßt die Finger von dieser Variante.
Schöne Grüße,
Michael
P.S.: Falls das die Sache immer noch nicht trifft, wäre ne Beispieldatei mit Deinen KONKRETEN Variablennamen nicht verkehrt.