Sverweis mit VBA

30/03/2010 - 21:18 von Daniel Frei | Report spam
Hallo zusammen

Ja ich habe die Suchfunktion benutzt und auch schon am Makro gebastelt doch
es kommt trotzdem ein Fehler. Ich möchte in einzelnen Tabellen nach einem
Mitarbeiter und dessen Arbeitsstunden suchen.
Mein Aufgezeichnetes Makro sieht so aus:

Makro aus: =SVERWEIS(H8;Januar!A2:E43;2;1)
Sub sverweis()
ActiveCell.FormulaR1C1 =
"=VLOOKUP(RC[-1],Januar!R[-6]C[-8]:R[35]C[-4],2,1)"
End Sub

Da dies aber nicht genau das ist was ich möchte habe ich es, wie ganz unten
abgebildet, abgeàndert. Doch nun kommt der Laufzeitfehler 438.
Mein Makro habe ich mit dem Monat Januar gemacht, doch es gibt für jeden
Monat ein Sheet. Ich möchte Folgendes erreichen:
Im Sheet Erfassen soll in Zelle I8 der Monatlich Saldo des Mitarbeiters
geschrieben werden. Zuvor kann mittels Schaltflàche der MA und der Monat
ausgewàhlt werden. Der Name des MA wird in Zelle H8 geschrieben.

Hoffe Ihr könnt mir die Lösung zu meinem Problem geben.

Danke schon mal im Voraus und Grüsse aus der Schweiz
Daniel

*********************************
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


Hier mein neuer 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)
Cells("I8") = Application.WorksheetFunction.VLookup(H8, (Sheets("" &
ZielBlatt)("A2:B42")), 2, True) ' hier habe ich "gebastelt" irgendwas mit
der Matrix und so klappt nicht. Wie bringe ich das Zielblatt als Matrix hin?
Range("I9").Select


End Sub
 

Lesen sie die antworten

#1 Peter Schleif
31/03/2010 - 07:50 | Warnen spam
Daniel Frei schrieb am 30.Mrz.2010 21:18 Uhr:

Cells("I8") = Application.WorksheetFunction.VLookup(H8, (Sheets("" &
ZielBlatt)("A2:B42")), 2, True)

Doch nun kommt der Laufzeitfehler 438.



1. Sheets("" & ZielBlatt)("A2:B42") ist kein gültiger Bereich. Es fehlt
"." zwischen dem Sheet und dem Range. Die àußeren Klammern sind unnötig.

2. H8 ist in VBA keine gültige Zelle. Es wird als (nicht deklarierte)
Variable interpretiert. Du siehst es sofort, wenn Du Option Explicit
einschaltest (Fehler: Variable nicht deklariert).

3. Cells("I8") ist syntaktisch falsch.

4. Vlookup kann (genau wie SVERWEIS) auch mal nichts finden und liefert
dann einen Fehler. Wàre nicht schlecht, den mit "On Error" abzufangen.


Bei mir klappt es so:

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

Peter

Ähnliche fragen