VLookup verursacht Laufzeitfehler

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: VLookup verursacht Laufzeitfehler
von: Franky
Geschrieben am: 02.10.2015 10:27:12

Hey Leute,
brauche mal wieder eure Hilfe, komme einfach nicht auf das Problem.
Ich habe folgenden Code


z = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For zeile = 2 To z
    If Cells(zeile, 8) = LiefNr Then
        For Azeile = zeile To z
         If Cells(Azeile, 1) = Cells(Azeile + 1, 1) And Cells(Azeile, 3) <> Cells(Azeile + 1, 3) _
 Then
           menge = 0
          For Bzeile = Azeile + 1 To z
         If Cells(Bzeile, 1) = Cells(Bzeile + 1, 1) And Cells(Bzeile, 3) = Cells(Bzeile + 1, 3)  _
Then
          menge = menge + Cells(Bzeile, 6)
         Else
         gesmenge = (Cells(Azeile, 6) - menge - Cells(Bzeile, 6)) / (Cells(Azeile, 6) / 100)
        NoteMenge = WorksheetFunction.VLookup(gesmenge, Workbooks("Datei1.xls").Worksheets(" _
Stammdaten").Range("E43:F53"), 2, True)
        TDiff = DateDiff("d", Cells(Azeile, 7), Cells(Bzeile, 7), vbMonday)
        NoteDate = WorksheetFunction.VLookup(TDiff, Workbooks("Datei1.xls").Worksheets(" _
Stammdaten").Range("B43:C55"), 2, True)
      Exit For
      End If
      Next
    GesNoteMenge = GesNoteMenge + NoteMenge
    GesNoteDate = GesNoteDate + NoteDate
    Azeile = Bzeile
            
   Else                
   End If    
   Next
 End If
Next

Und nun zu meinem Problem, wenn ich das Programm starte bekomme ich immer die Fehlermeldung "Laufzeitfehler 1004: VLookup-Eigenschaften des WorksheetFunction-Objektes kann nicht zugeordnet werden.".
Wenn ich debugge zeigt er mir die Zeile "NoteDate=..." an.
Komischerweise wenn ich mit über Msgbox NoteDate ausgeben lassen funktioniert es, und ist sogar richtig....
achso, die Variablen sind als Integer bzw als Long deklariert.
Kann mir das jemanden erklären....
Vielen Dank....

Bild

Betrifft: AW: VLookup verursacht Laufzeitfehler
von: Daniel
Geschrieben am: 02.10.2015 12:05:15
Hi
der Code allein lässt natürlich viele Fehlermöglichkeiten offen.
dass die verwendete Datei geöffnet und das Tabellenblatt richtig benannt ist, setzte ich mal voraus.
Ansonsten kann auch der SVerweis/VLookUp mit 4. Parameter = True einen #NV-Fehler als Ergebnis haben, wenn der Suchbegriff gesmenge kleiner ist, als der kleinste und damit erste Wert in Suchmatrix (Stammdaten!E43)
Gruß Daniel

Bild

Betrifft: AW: VLookup verursacht Laufzeitfehler
von: Franky
Geschrieben am: 02.10.2015 12:26:08
Hey Daniel,
grundsätzlich funktioniert der Code, das komische ist ja, wenn ich mir nach dem NoteDate bzw. NoteMenge ermittelt wurde, per MsgBox NoteDate bzw. NoteMenge anzeigen lassen, funktioniert es, und das mit richtigen Wert aus der Matrix.
Deswegen versteh ich es nicht...

Bild

Betrifft: AW: VLookup verursacht Laufzeitfehler
von: Franky
Geschrieben am: 05.10.2015 14:32:24
Hey Leute...
meine if-Schleifen funktionieren jetzt...
aber ich habe noch Probleme mit dem VLookup... ich weiß nicht ob das so machen kann... folgendes..


Dim NoteMenge As Long
Dim NoteDate As Long
Dim wkz As Workbook
Application.ScreenUpdating = False
Set wkz = Workbooks("Datei1.xls")
NoteMenge = WorksheetFunction.VLookup(gesmenge, wkz.Range("E43:F53"), 2, False)
 NoteDate = WorksheetFunction.VLookup(TDiff, wkz.Range("B43:C55"), 2, False)
die Schleifen die vorher durlaufen werden, werden in Datei2 abgefragt, deswegen der Bezug zu Datei1,
aber irgendwie funktioniert das leider nicht so richtig...
Kann mir jemand weiter helfen, mit ner kurzen Beschreibung, für den Lerneffekt wäre nicht schlecht..
Danke....

Bild

Betrifft: AW: VLookup verursacht Laufzeitfehler
von: Daniel
Geschrieben am: 05.10.2015 14:47:19
Hi
da fehlt im VLookUp noch die angabe des Tabellenlblatts zwischen dem Workbook wkz und der Rangeangabe:
NoteMenge = WorksheetFunction.VLookup(gesmenge, wkz.Worksheets("Tabelle1").Range("E43:F53"), 2, False)
Gruß Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VLookup verursacht Laufzeitfehler"