Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
264to268
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
264to268
264to268
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VLOOKUP in Excel 2000

VLOOKUP in Excel 2000
08.06.2003 18:28:04
Sven
Hi NG !

Folgender Code sollte meineserachtens indie Zelle f1 einen SVERWEIS hineinschreiben.

Sub vlookuptest()

Cells(1, 5).Formula = Application.WorksheetFunction.VLookup Worksheets("einige").Range("A3").Value, _
Worksheets("Konstanten").Range("A2:D24"), 2, 0)
End Sub

Tut er aber nicht. Stattdessen immer die gleiche Fehlermeldung :
Laufzeitfehler "1004"
Anwendungs- oder objektdefinierter Fehler !

Tja, jetzt weiss ich wahrlich nicht mehr weiter !

Gruß

Sven

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VLOOKUP in Excel 2000
08.06.2003 18:34:10
Georg_Zi

Hallo Sven

Cells(1, 5).Formula = "=VLOOKUP(Einige!A3,Konstanten!A2:D24,2,0)"

Gruß Hajo

Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel


Re: VLOOKUP in Excel 2000
08.06.2003 19:08:56
Sven

Moin Hajo !

Danke erstmal. Das funzt ja, wenn ich jetzt aber den Sverweis nur in VBA verwenden möchte, dann haut er Grundsätzlich bei der Übergabe an ein Objekt die vorhingenannte Fehlermeldung raus.

Hast du ne Lösung parat ?
Für's Verständnis :

Ich habe in der Tabelle "einige" ca. 20000 Zeilen Text, 88 Datensätze die durch eine Zelle mit dem Inhalt CHR(12) getrennt werden. Nun müssen diese Datensätze sortiert werden und Zeilenweise abgespeichert werden zwecks weiterverarbeitung in DBMS. In der Tabelle "Konstanten" sind die Begriffe abgebildet, die Konstnt sind, soll heissen, an diesen Begriffen erkenne ich bestimmte Datenfelder. Nun soll Excel die Zellen durchlaufen und Prüfen, ob die aktuelle Zelle in den Konstanten ist, wenn ja, soll er einen Wert ausgeben und die eigentliche Verarbeitung der Werte danach findet automatisch statt. Momentane Lösung ist eine Select Case Else Anweisung, die aber schon für die ersten Paar Zeilen sehr mühsam ist. Hier das Beispiel :

Sub main()
Dim x, y, k, spalte, zz, zeiger, zeile As Variant
Dim i As Integer
Dim s, land As String
Dim curcell As Object
Dim rowmax As Long
Dim ecsit As Boolean

rowmax = 20000
s = Chr(12)
spalte = 1
k = 2
x = 1
y = 1
zeile = 1
zz = 1
zeiger = 2
Set curcell = Workbooks("einige.xls").Worksheets("einige").Cells(y, x)

For i = 1 To rowmax
If curcell = s Then
zeile = zeile + 1
Do
Select Case Left(curcell.Offset(zeiger, 0), 9)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(2, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 7) = Right(curcell.Offset(zeiger, 0), 4)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(3, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 8) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 10)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(4, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 9) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 14)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(5, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 10) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 11)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(6, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 11) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 15)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(7, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 12) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 12)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(8, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 13) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 13)
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(9, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 14) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)))
Case Workbooks("einige.xls").Worksheets("Konstanten").Cells(10, 1)
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, 15) = Right(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)) - 18)
Case Else
Workbooks("einige.xls").Worksheets("Datenfelder ").Cells(zeile, zz) = Left(curcell.Offset(zeiger, 0), Len(curcell.Offset(zeiger, 0)))
zz = zz + 1
End Select
zeiger = zeiger + 1
If Left(curcell.Offset(zeiger, 0), 12) = "Phone Number" Or Left(curcell.Offset(zeiger, 0), 14) = "E-Mail Address" Then
ecsit = True
Else
ecsit = False
End If
Loop While ecsit = False
End If
zz = 1
zeiger = 2
y = y + 1
Set curcell = Workbooks("einige.xls").Worksheets("einige").Cells(y, x)
Next i
End Sub

Ich bin der Meinung, mit einem SVERWEIS liesse sich die ganze Sache viel einfacher Lösen, bekomme aber wie gesagt immer diese Fehlermeldungen.

Vielen Dank im Voraus.

Gruß

Sven


Anzeige
Re: VLOOKUP in Excel 2000
08.06.2003 19:41:55
Ramses

Hallo,

Wenn der Eintrag den du suchst nicht existiert, wird die Fehlermeldung erzeugt.
Das Problem:
VLOOKUP lässt sich im VBA-Code nicht so einfach auffangen wie in der Zelle.
Du musst eine spezielle Fehlerbehandlung einsetzen wie z.B.

Gruss Rainer

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige