Formelergebnis in Variable speichern

Juwee

Mitglied
Moin,

Ich bastel gerade an einem Excelvorlage zum Erstellen eines rudimentären Dienstplan.
So habe ich z.B. in Tabelle 1 B2 eine "Liste" mit Früh, Spät, Frei. In Tabelle 2 stehen die passenden Zeiten dazu.
Nun möchte ich in der z.B. "Früh" auswählen und in die jeweils aktive Zelle die passende Zeit schreiben.
Diese hole ich mir mit SVerweis.
Das Makro löse ich, wider besseren Wissens, mit F2 aus. Ein bessere Lösung ist mir nicht eingefallen.

Im Modul1 habe ich:
Code:
Sub WriteVal()

Dim oVal As Variant
Dim rAC As Range

Set rAC = ActiveCell

    oVal = Evaluate("SVERWEIS(Tabelle1!B2;Tabelle2!A1:B3;2;FALSCH)")
    rAC.Value = oVal
   
Set rAC = Nothing

End Sub

Unter "Arbeitsmappe" hab ich das eingedost:
Code:
Private Sub Workbook_Open()
Application.OnKey "{F2}", "WriteVal"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "{F2}"
End Sub

Grundsätzlich funktioniert das soweit, außer daß ich beim Auslösen des Makros in der aktiven Zelle ein #WERT! erhalte.
Was mache ich falsch bzw. gibt es hierfür einen anderen Lösungsweg?

Lieben Dank im Voraus und Grüße,
Juwee
 
hab mal Zeile 9 dahin gehend geändert:

oVal = Application.Evaluate("=SVERWEIS(Tabelle1!A1;Tabelle2!A1:B3;2;FALSCH)")

leider ohne Erfolg... B2 hat sich in A1 geändert, da ich die "Liste" in eine andere Zelle, wo sie ohnehin final sein soll gesetzt habe.
 
'=SVERWEIS(Tabelle1!A1;Tabelle2!A1:B3;2;FALSCH)
oVal = Application.WorksheetFunction.VLookup(Tabelle1.Range("A1"), Tabelle2.Range("A1:B3"), 2, FALSCH)

So klappt's dann wie gewünscht :)
 
Zurück