Sverweis mit VBA mit If Block

15/04/2010 - 22:10 von Daniel Frei | Report spam
Hallo zusammen

In meinem Posting vom 30.3.10 hatte ich das Problem, dass ich einen Sverweis
in VBA brauchte und nicht richtig umsetzte. Doch Peter Schleif half mir mit
folgendem Code:
[I8] = WorksheetFunction.VLookup([H8], Sheets(ZielBlatt).[A2:B42], 2, True)

Wenn jetzt aber der Mitarbeiter im Zielblatt nicht enthalten ist, erhalte
ich den Laufzeitfehler 1004. Ich möchte nun eine MsgBox erscheinen lassen,
wenn ein Mitarbeiter nicht enthalten ist. Da mein VBA für dies nicht reicht
suche ich bei euch um Hilfe. Zur genaueren Angabe gebe ich euch noch den
gesamte Code unten an.

Danke schon mal für eure Mühen und Hilfe


*********************************
Nur wer fragt kommt im Leben weiter.
Ein kluger Mann macht nicht alle Fehler selbst. Er gibt auch anderen eine
Chance. --
"Winston Churchill"
_______________________
Win 7
Office 2007 Enterprise



Code

Dim Stunden, Ferien As Variant ' Variablen der Eingabefelder
Dim Monat As Byte
Dim ZielBlatt As Variant ' Das Zielblatt ist ein Monatssheet

Sub Ausgabe2()

Sheets("Erfassen").Activate
MA = Sheets("Erfassen").Range("AD2").Value
Monat = Cells(16, 27).Value

Dim Eingabewert As Byte

Eingabewert = MsgBox("Wollen Sie den Monat" & " " &
Sheets("Erfassen").Range("AB2") & " " & vbNewLine & _
"und den Mitarbeiter" & " " & Sheets("Erfassen").Range("AD2") & " " & "?",
vbYesNoCancel)

If Eingabewert = vbYes Then
Cells(8, 8) = MA 'hier wird der Mitarbeiter geschrieben nach diesem soll
dann im Zielblatt gesucht werden

ElseIf Eingabewert = vbNo Then
MsgBox "Dann wàhlen Sie bitte einen anderen Monat oder Mitarbeiter!"
End If

ZielBlatt = MonthName(Monat)

'Sverweis auf Zelle I8 =SVERWEIS(H8;Januar!A2:E43;2;1)
[I8] = WorksheetFunction.VLookup([H8], Sheets(ZielBlatt).[A2:B42], 2, True)
'hier soll nun abgefangen werden wenn der MA nicht im Zielblatt vorhanden
ist.

End Sub
 

Lesen sie die antworten

#1 Peter Schleif
16/04/2010 - 07:04 | Warnen spam
Daniel Frei schrieb am 15.Apr.2010 22:10 Uhr:

In meinem Posting vom 30.3.10 hatte ich das Problem, dass ich einen Sverweis
in VBA brauchte und nicht richtig umsetzte. Doch Peter Schleif half mir mit
folgendem Code:
[I8] = WorksheetFunction.VLookup([H8], Sheets(ZielBlatt).[A2:B42], 2, True)

Wenn jetzt aber der Mitarbeiter im Zielblatt nicht enthalten ist, erhalte
ich den Laufzeitfehler 1004. Ich möchte nun eine MsgBox erscheinen lassen,
wenn ein Mitarbeiter nicht enthalten ist.



Eigentlich gibt es für solche Fàlle Funktionen wie IsError(), die aber
bei VLookup/Match/etc. nicht greifen. Eine einfache Lösung wàre es, hier
ausnahmsweise mit OnError zu arbeiten. Nicht besonders schön, aber effektiv:

On Error GoTo nicht_gefunden
[I8]=WorksheetFunction.VLookup([H8],Sheets(ZielBlatt).[A2:B42],2,True)

nicht_gefunden:
If Err Then MsgBox "Nicht gefunden"
Err.Clear

Peter

Ähnliche fragen