Anzeige

 Formelergebnis in Variable speichern


Juwee

Grünschnabel
#1
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
 

Juwee

Grünschnabel
#2
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.
 

Juwee

Grünschnabel
#3
'=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 :)
 
Anzeige

Neue Beiträge

Anzeige