Übergabe von Variablen in SVERWEIS in VBA
Habe ich diesen code:
currName = "string" 'unused
cellNum = [VLOOKUP("string", '2012'!A:M, 13, FALSE)]
Aber ich brauche zu ersetzen "string"
mit einer Variablen in VBA-code-Namen currName
. Ich versuchte dies:
currName = "string" 'used
cellNum = [VLOOKUP(currName, '2012'!A:M, 13, FALSE)]
Was ist die richtige syntax? Wenn ich versuche den 2. Teil mit der Verwendung der variable, die Frage, die ich bin, immer ist es der Rücksendung bei ungültigen Daten (wie wenn ich die Eingabe wieder in eine Zelle, es ist #NAME?
). currName
ist einfach gleich "string". Es funktioniert gut, im ersten Beispiel ohne die variable verwendet wird.
- Wo ist der rest des Codes? Es ist ziemlich unmöglich, herauszufinden, was falsch sein könnte (ich glaube 3 oder 4 Sachen), ohne zu sehen, wie die Variablen deklariert sind, etc.
- Hinzugefügt; es ist nichts Komplexes, nur eine Zuordnung.
- Siehe meine Antwort unten, und Lesen Sie @DougGlancy Bemerkungen für eine Erklärung, warum dein Ansatz scheitert, wenn Sie nicht mit einem string-literal in der Funktion.
- Hatten Sie eine chance, um zu versuchen, meine Antwort unten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich nicht gesehen eckigen Klammern, die in dieser Art und Weise vor. Normalerweise sind diese Verknüpfung für
Range
Objekte. Ich bin in der Lage zu replizieren und Ihre Fehler.Können Sie so etwas wie dieses, statt. Beide Zuordnungen zu
cellNum
Arbeit ohne Fehler:Evaluate
Funktion. Die arbeiten auch nicht in den OP, weili
nicht bewerten, um nichts in der Formel. +1 auf Ihre Antwort.i
im OP-Präparat?CurrName
.currName = "string"
in der vorhergehenden Zeile. Warum sollte es nicht bewerten?CurrName
macht keinen Sinn in diesem Kontext. Es gibt keine evaluation im Bewerten, in anderen Worten, er weiß nicht, dassCurrName
ist eine variable, die auf "String". Wieder, es ist einfach so, wenn Sie eingegeben werden, die gesamte Formel in eine Zelle. Und du hast Recht, das ist die Wurzel der OP das problem.cellNum
ist einRange
Objekt-variable. Dies machte Sinn für mich, in der Abwesenheit von Anzeichen für das Gegenteil, von Ihnen. Dies ist der Grund, warum es hilfreich ist, poste deine vollständigen code, und nicht nur den Teil, den Sie glaubst ist wichtig. WenncellNum
ist einVariant
oder etwas anderes, es sollte noch in der Lage sein, dies zu akzeptieren Auswertung. Versuchen Sie es.cellNum
ist nicht oder auf die verwiesen wird, bevor der code, den ich eingefügt habe in meiner ursprünglichen Frage und zwar, ob das hilft. Solange der code ändert sich nicht alle Zellen (ich bin auf der Suche für die Berechnungen im code), das funktioniert für mich.cellNum
? Verstehst du nicht, wiewsFunc.VLookup(currName, rngLook, 2, False)
verwendet werden kann, wie die Rechte Seite einer Zuweisungsanweisung verwenden, um IhrecellNum
variable?Verwenden Sie die
Evaluate
Funktion. Die Formel ist eine Zeichenkette, so haben Sie zu verketten alles in einen string:=VLOOKUP()
syntax, könnte man übersetzen, dass in der Art, wie ich bin, es zu benutzen?#NAME?
Fehler, wenn ich dies versuchen. Sind Sie sicher, dass Sie nicht fehlt eine Reihe von Zitaten?