Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
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

VBA - sverweis Laufzeitfehler 1004

VBA - sverweis Laufzeitfehler 1004
16.07.2014 14:58:37
Anja
Hallo zusammen,
ich versuche ein Makro zu schreiben, das mir einen sverweis automatisiert. Aber bei der Ausführung bekomme ich immer den Laufzeitfehler 1004. Als Anfänger bin ich am Ende meiner Überlegungen, warum der Code nicht läuft.
Ich würde mich freuen, wenn mir jemand einen Tipp geben kann.
Der Sverweis ist am Ende des Makro.
_____________________________________________________________________________________

Sub Globus_Sverweis()
Dim Spalte_gefunden As Range 'Tabelle 2
Dim Splatenname As String 'Tabelle 2
Dim a As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 2
Dim b As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 2
Dim c As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 2
Dim d As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 2
Dim e As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 2
Dim f As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 2
Dim Letzte_Zeile As Integer 'Tabelle 2
Dim k As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 2
Dim l As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 1
Dim m As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 1
Dim n As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 2
Dim p As Integer 'Berechnung spaltenindex für sverweis
Dim LetzteSpalte As Integer 'Tabelle 1
Dim LetzteZeile As Integer 'Tabelle 1
Dim u As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 1
Dim v As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 1
Dim w As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 1
Dim x As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 1
Dim y As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 1
Dim z As Integer 'Übergabe Spaltenzahl an Variable ,Tabelle 1
'----->Suche Spaltenname und weise Spaltennummer einer Variablen zu
'Tabellenblatt 2 aktiv setzen
Worksheets("2").Activate
'Ladungsträger (im GP enthalten) in Abschluss Währung
Spaltenname = "Ladungsträger (im GP enthalten) in Abschluss Währung"
Set Spalte_gefunden = Rows(1).Find(What:=Spaltenname, LookIn:=xlValues, LookAt:=xlWhole)
If Not Spalte_gefunden Is Nothing Then
a = Spalte_gefunden.Column
'        MsgBox a
Else
MsgBox "Nichts gefunden!"
End If
'Transportkosten bis Auslieferort (im GP enthalten) in Abschluss Währung
Spaltenname = "Transportkosten bis Auslieferort (im GP enthalten) in Abschluss Währung"
Set Spalte_gefunden = Rows(1).Find(What:=Spaltenname, LookIn:=xlValues, LookAt:=xlWhole)
If Not Spalte_gefunden Is Nothing Then
b = Spalte_gefunden.Column
Else
MsgBox "Nichts gefunden!"
End If
'Transportkosten bis Verbrauchswerk (im GP enthalten) in Abschluss Währung
Spaltenname = "Transportkosten bis Verbrauchswerk (im GP enthalten) in Abschluss Währung"
Set Spalte_gefunden = Rows(1).Find(What:=Spaltenname, LookIn:=xlValues, LookAt:=xlWhole)
If Not Spalte_gefunden Is Nothing Then
c = Spalte_gefunden.Column
Else
MsgBox "Nichts gefunden!"
End If
'Verpackungskosten (im GP enthalten) in Abschluss Währung
Spaltenname = "Verpackungskosten (im GP enthalten) in Abschluss Währung"
Set Spalte_gefunden = Rows(1).Find(What:=Spaltenname, LookIn:=xlValues, LookAt:=xlWhole)
If Not Spalte_gefunden Is Nothing Then
d = Spalte_gefunden.Column
Else
MsgBox "Nichts gefunden!"
End If
'JIS / JIT (im GP enthalten) in Abschluss Währung
Spaltenname = "JIS / JIT (im GP enthalten) in Abschluss Währung"
Set Spalte_gefunden = Rows(1).Find(What:=Spaltenname, LookIn:=xlValues, LookAt:=xlWhole)
If Not Spalte_gefunden Is Nothing Then
e = Spalte_gefunden.Column
Else
MsgBox "Nichts gefunden!"
End If
'Handling (im GP enthalten) in Abschluss Währung
Spaltenname = "Handling (im GP enthalten) in Abschluss Währung"
Set Spalte_gefunden = Rows(1).Find(What:=Spaltenname, LookIn:=xlValues, LookAt:=xlWhole)
If Not Spalte_gefunden Is Nothing Then
f = Spalte_gefunden.Column
Else
MsgBox "Nichts gefunden!"
End If
'SNR Tabelle 2
Spaltenname = "SNR"
Set Spalte_gefunden = Rows(1).Find(What:=Spaltenname, LookIn:=xlValues, LookAt:=xlWhole)
If Not Spalte_gefunden Is Nothing Then
n = Spalte_gefunden.Column
Else
MsgBox "Nichts gefunden!"
End If
Letzte_Zeile = Cells.SpecialCells(xlCellTypeLastCell).Row
k = Letzte_Zeile
'    MsgBox Letzte_Zeile
'----->Sverweis in Tabellenblatt 1 ausführen
'Tabellenblatt 1 aktiv setzen
Worksheets("1").Activate 'Arbeitsblatt Aktiv setzen
'Ladungsträger (im GP enthalten) in Abschluss Währung
LetzteSpalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(1, LetzteSpalte) = "Ladungsträger (im GP enthalten) in Abschluss Währung"
u = LetzteSpalte
'    MsgBox u
'Transportkosten bis Auslieferort (im GP enthalten) in Abschluss Währung
LetzteSpalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(1, LetzteSpalte) = "Transportkosten bis Auslieferort (im GP enthalten) in Abschluss Wä _
_
_
hrung"
v = LetzteSpalte
'Transportkosten bis Verbrauchswerk (im GP enthalten) in Abschluss Währung
LetzteSpalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(1, LetzteSpalte) = "Transportkosten bis Verbrauchswerk (im GP enthalten) in Abschluss  _
_
_
Währung"
w = LetzteSpalte
'Verpackungskosten (im GP enthalten) in Abschluss Währung
LetzteSpalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(1, LetzteSpalte) = "Verpackungskosten (im GP enthalten) in Abschluss Währung"
x = LetzteSpalte
'JIS / JIT (im GP enthalten) in Abschluss Währung
LetzteSpalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(1, LetzteSpalte) = "JIS / JIT (im GP enthalten) in Abschluss Währung"
y = LetzteSpalte
'Handling (im GP enthalten) in Abschluss Währung
LetzteSpalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(1, LetzteSpalte) = "Handling (im GP enthalten) in Abschluss Währung"
z = LetzteSpalte
'Sachnummer Tabelle 1
Spaltenname = "Sachnummer"
Set Spalte_gefunden = Rows(1).Find(What:=Spaltenname, LookIn:=xlValues, LookAt:=xlWhole)
If Not Spalte_gefunden Is Nothing Then
m = Spalte_gefunden.Column
Else
MsgBox "Nichts gefunden!"
End If
LetzteZeile = Cells.SpecialCells(xlCellTypeLastCell).Row
l = LetzteZeile
' a-f = Spalten Tabelle 1, wo sverweis abgerufen wird
' k = letzte Zeile Tabelle 2
' l = letzte Zeile Tabelle 1
' m = Spalte Tabelle 1, in der die SNR steht
' n = Spalte Tabelle 2, in der die SNR steht
' u-z = Spalten Tabelle 1, wo sverweis eingetragen wird
'Spaltenindex für sverweis errechnen
p = a - n + 1
'   MsgBox p
 Syntaxfehler beginnt hier:
i = 2
Cells(i, u).Select
For i = 2 To l - 1
ActiveCell.Value = Application.WorksheetFunction.VLookup(Cells(i, m).Value, Worksheets("2"). _
_
_
Cells(k, n), p, False)
ActiveCell.Offset(1, 0).Select
Next
End Sub

_____________________________________________________________________________________
Für jede Lösung bin ich dankbar.
Viele grüße

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - sverweis Laufzeitfehler 1004
16.07.2014 15:24:19
Daniel
Hi
Die VLookUp-Funktion bricht mit einem Fehler ab, wenn sie den Suchbegriff nicht finden kann (NV#-Fehler bei normaler SVerweis-Funktion in Execl.)
Das ist bei dir aber sehr wahrscheinlich, weil dein Sachbereich nur aus einer einzigen Zelle besteht.
Allerdings ist die von dir gewählte Methode die denkbar schlechteste, um den SVerweis zu automatisieren.
Bei einzelnen werten verwendet man in VBA besser die .Find-Funktion (hier ein Beispiel im Pseudocode)
Set Zelle = range(suchspalte).find(what: = Suchwert)
if Not Zelle is Nothing then Ergebniszelle.Value = Zelle.Offset(0, x).value
Wenn du den SVerweis für viele Zellen einer Spalten benötigst, dann ist ea auch per VBA am günstigsten, den SVerweis als Formel in die Zellen zu schreiben und hinterher ggf. die Formel durch ihren Wert zu ersetzen. Hierbei benötigt man keine Schleife, weil man per VBA eine Formel in viele Zellen gleichzeitig schreiben kann:
with range(cells(2, u), cells(l-1, u))
.formulaR1C1 = "=vlookup(RC" & m &",2!R1C" & n & ":R" & k & "C" & k + p & "," & p & ",0)"
.formula = .Value
End with
Gruß Daniel
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige