Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VLookup meldet "Objektdefinierenden Fehler"

VLookup meldet "Objektdefinierenden Fehler"
Pete
Hallo alle zusammen,
ich hätte eine Frage bzgl. der VLookup Funktion in VBA.
Ich habe in Tabelle1 eine Zwei Spalten mit Terminen. Diese sollen in Tabelle2 per VLookup in einen Kalender übertragen werden. Dabei ist im Kalender die jeweils erste Spalte das Datum des Tages im Format "01 Di". In Tabelle1 ist in der Spalte A das Datum des Termins und in Spalte B die Bezeichnung. wechselt man in Tabelle2 so soll automatisch das Makro gestartet werden un die Termine aktualisiert werden. Deshalb steht der Code in der Tabelle2! Doch leider kommt dabei immer die Fehlermeldung "Die VLookup-Eigenschaft des WorksheetFunction-Objetes kann nicht zugeordnet werden."
Folgenden Code habe ich erstellt:

Private Sub Worksheet_Activate()
Dim k As Integer
Dim i As Integer
For k = 4 To 28 Step 2
For i = 3 To 31
If Application.WorksheetFunction.VLookup(Sheets(2).Cells(i, k - 1), Sheets(1).Range("A3: _
_
_
B29"), 2, False) = "" Then
Else
Sheets(2).Cells(i, k) = Application.WorksheetFunction.VLookup(Sheets(2).Cells(i, k - _
_
_
1), Sheets(1).Range("A3:B29"), 2, False)
End If
Next i
Next k
End Sub

Ich wäre sehr dankbar für jede Anregung!
VG Peter

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VLookup meldet "Objektdefinierenden Fehler"
13.10.2011 19:49:37
Josef

Hallo Peter,
ich löse das z. B. so.

Private Sub Worksheet_Activate()
  Dim lngCol As Long, lngRow As Integer
  Dim vntRet As Variant
  
  For lngCol = 4 To 28 Step 2
    For lngRow = 3 To 31
      vntRet = Application.Match(Sheets(2).Cells(lngRow, lngCol - 1), Sheets(1).Columns(1), 0)
      If IsNumeric(vntRet) Then
        If Sheets(1).Cells(vntRet, 2) <> "" Then
          Sheets(2).Cells(lngRow, lngCol) = Sheets(1).Cells(vntRet, 2)
        End If
      End If
    Next
  Next
  
End Sub



« Gruß Sepp »

Anzeige
da stimme ich Sepp zu
13.10.2011 20:07:24
Christian
hallo Peter,
SVERWEIS verrwende ich nie, ist zu unflexibel. Allerdings bin ich von deinem Level noch weit entfernt.
Aber es kann bei SVERWEIS und auch bei VERGLEICH wohl Probleme bei Datumsangaben geben. Vorschlag: Wandle das Datum in einen String um (bzw. Long oder Double), dann sollte das auch klappen.
Gruß
Christian
AW: VLookup meldet "Objektdefinierenden Fehler"
13.10.2011 23:39:26
Peter
Hallo nochmal,
leider erhalte ich ständig den Fehler 2042. Ich denke dabei findet das Makro keinen Eintrag. Ich habe bisher noch nie mit "Match" gearbeitet und weiß daher noch nicht, wo der Fehler überhautp auftreten kann. Deshalb habe ich die Datei mal hochgeladen. Schaut sie euch bitte einfach mal an, vllt findet ihr ja den Fehler.
https://www.herber.de/bbs/user/76996.xlsm
Vielen vielen herzlichen Dank!
Peter
Anzeige
Das ist auch kein Wunder, denn ...
14.10.2011 16:43:20
Luc:-?
vntRet = Application.Match(Sheets("Kalender").Cells(lngRow, lngCol - 1), Sheets("Feiertage").Range("A3:B30"), 0) ist völlig verkehrt, Peter!
Viell hättest du mal in der xlHilfe nachlesen sollen, wie VERGLEICH fktt. Arg1 wird in Arg2 gesucht, Arg3=0 ist richtig. Arg1 u. Arg2 dürfen nur Vektoren sein, also 1 Zeile oder Spalte, keine Matrix! Wenn man eine Matrix durchsuchen wollte, müsste man mit einem Trick arbeiten, aber das scheint hier gar nicht nötig zu sein.
Interessanterweise fängst du in Kalender mit Zelle(3,3) also C3 an zu vgl, die ist aber leer, was soll dann da in Feiertage gefunden wdn?! Du willst doch sicher das Datum vgln! Also Tipp von mir → mach das erst mal mit Fml und übertrage das dann in VBA. Das Tagesdatum in B2 musst du in Feiertage!A:A suchen. Die Zahl, die dann zurückgegeben wird, falls der Tag in Feiertage vorkommt (sonst #NV, musst du abfangen*), wird bei FmlLösung in INDEX, in VBA direkt als Zeilennr von Feiertage!B:B verwendet (ab Startzeile, also ggf Vorzeilen addieren!). Das Ergebnis soll ja dann wohl in der Zelle Kalender!C2 usw erscheinen.
* Mit WorksheetFunction.Match gäbe es kein 2042, sondern der Index bliebe 0, wenn du ihn vorher löschst. Abfragen musst du das aber auf jeden Fall, bei WshFct reicht If CBool(index) Then
Gruß Luc :-?
PS: Warum verwendest du (horizontale) VerbundZellen, wenn die doch nur einen einzigen Text enthalten? Das geht auch mit Format über Auswahl zentrieren. VZellen kannst du für Besseres verwenden… ;-)
Anzeige
AW: VLookup meldet "Objektdefinierenden Fehler"
14.10.2011 18:39:49
Josef

Hallo Peter,
erst einmal eine Grundsatzfrage, warum das ganze per VBA?
Das geht doch ganz einfach mit Formeln.

« Gruß Sepp »

Viell will er ja Einträge im Kalender machen, ...
15.10.2011 14:42:49
Luc:-?
…Sepp,
da würden die Fmln dann stören.
Gruß + schöWE, Luc :-?
Kalender mit Formeln
14.10.2011 19:08:04
Josef

Hallo Peter,
anbei mal ein Beispiel mit Formeln und einem dynamischen Feiertagsblatt.
https://www.herber.de/bbs/user/77014.xlsx

« Gruß Sepp »

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige