Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA-Sverweis in externe Datei

VBA-Sverweis in externe Datei
17.11.2008 11:37:49
Stephan
Hallo zusammen,
ich habe mal wieder ein Problem.
Und zwar soll mit u. a. Code ein Sverweis auf eine externe Datei durchgeführt werden. Allerdings gibt es folgende Fehlermeldung: "Fehler beim kompilieren: Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft." Er markiert zusätzlich den Begriff "Workbooks". Dieses Makro habe ich derzeit einem Button zugewiesen, es soll aber nach Eingabe einer Auftragsnummer in Zelle C7 selbstständig ablaufen (Worksheet Selection_Change?!). Könnt ihr mir vielleicht weiterhelfen? Grüße, Stephan

Sub Sverweis()
[C8] = Application.VLookup(Range("C7"), Workbooks("T:\Bon\Pro\Avful\ planning.xls", Worksheets(" _
Tabelle1").Range("A5:P65536"), 2, False))
End Sub


Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Sverweis in externe Datei
17.11.2008 12:01:00
Arthur
Hallo Stephan,
vermutlich fehlt Dir die Datei Plugin.ocx (sollte unter \Windows\system32 stehen. Im macroeditor kannst Du das unter References sehen, da steht unter Tools-references wahrscheinlich "Missing" beim Eintrag für Microsoft Active-X plugin.
Gruss
Arthur Dent
AW: VBA-Sverweis in externe Datei
17.11.2008 12:34:00
Stephan
Hallo Arthur,
danke zunächst für deinen Tipp. Du hast recht, mir fehlt dieses Plugin. Ich habe versucht es nachzuladen, aber dann kommt eine Fehlermeldung "Fehler beim laden einer dll". Was kann man denn in so einem Fall machen? Danke! Gruß, Stephan
Anzeige
AW: VBA-Sverweis in externe Datei
17.11.2008 12:35:00
Erich
Hallo Stephan,
wo geht die Klammer von Workbooks( wieder zu?
Probier mal

Sub Sverweis()
[C8] = Application.VLookup(Range("C7"), _
Workbooks("T:\Bon\Pro\Avful\ planning.xls").Worksheets("Tabelle1"). _
Range("A5:P65536"), 2, False)
End Sub

Vielleicht muss das Leerzeichen vor planning noch weg?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: VBA-Sverweis in externe Datei
17.11.2008 13:05:00
Stephan
Hallo Erich,
Danke für deinen Tipp. Ich habe es getestet, aber weder mit noch ohne Leerzeichen bei planning haut es hin. Stattdessen Fehlermeldung: Laufzeitfehler 1004 - Index außerhalb des gültigen Bereichs
Grüße, Stephan
AW: VBA-Sverweis in externe Datei
17.11.2008 13:26:34
Arthur
Hallo Stephan,
zunächst mal zum plugin.ocx Ich hatte den Fehler häufiger als ich ein Tool für viele User gebastelt hatte. Ich helfe mir dann immer damit, dass ich die Datei einfach direkt nach :\Windows\system32 kopiere. Danach funzt es i.d.R einwandfrei.
Zum Makro:
Probier doch mal die Vlookupformel händisch in C8 zu schreiben. Öffne dazu Deine Datei planning xls, und verwende die Formel sverweis (auf deutsch) bzw Vlookup auf Englisch also in etwa so:
= VLookup(C7;'T:\Bon\Pro\Avful\ [planning.xls]'Tabelle1';A5:P65536;2, False)
Dran kannst Du erkennen, ob es an Deinem Macro oder vielleicht an Deinen Daten liegt.
Gruss
Arthur Dent
Anzeige
AW: VBA-Sverweis in externe Datei
17.11.2008 14:42:00
Stephan
Hallo Arthur,
ich habe es wie von dir vorgeschlagen getestet. Bei VLookup und False zeigt er #NAME? an und beim SVERWEIS mit 0 für Falsch funktioniert es. Das ist schon sehr merkwürdig, aber er mag das Englisch wohl nicht. Gruß, Stephan
AW: VBA-Sverweis in externe Datei
17.11.2008 16:25:45
Erich
Hi Stephan,
mein voriger Beitrag war Müll.
Probier mal

Sub Sverweis()
With Range("C8")
.Formula = "=VLookup(" & Range("C7") & "," & _
"'T:\Bon\Pro\Avful\[planning.xls]Tabelle1'!A5:B65536, 2, False)"
.Formula = .Value
End With
End Sub

Wenn du die .Value-Zeile weglässt, bleibt die Formel in C7 stehen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: VBA-Sverweis in externe Datei
18.11.2008 11:54:33
Stephan
Hallo Erich,
Danke für deinen Vorschlag! Es funktioniert!
Es ist jetzt so, dass ich im Tabblatt "Tabelle1" mehrere Zellen habe, die bei einem Eintrag in die Zelle C7 automatisch den Sverweis ausführen sollen. Also ich gebe in Zelle C7 eine AuftragsNr. ein und in den Zellen C8,C9,C10,C15,C24,C27,C31 und C32 soll das Sverweis-Makro automatisch ausgeführt werden. Dazu müßte ich dieses Makro ja in ein Worksheet SelectionChange Ereignis packen. Könntest du mir dazu vielleicht einen Tipp geben, wie das auszusehen hat? Vielen Dank! Grüße, Stephan

Sub Sverweis()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveSheet.Unprotect Password:="xxx"
Application.Calculation = xlCalculationManual
With Range("C8")
.Formula = "=VLookup(" & Range("C7") & "," & "'T:\Bon\Pro\Afvul\[planning.xls]Tabelle1'! _
A5:P65536, 2, False)"
.Formula = .Value
End With
ActiveSheet.Protect Password:="xxx"
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


Anzeige
AW: VBA-Sverweis in externe Datei
18.11.2008 17:39:00
Erich
Hi Stephan,
etwas Grundsätzliches verstehe ich an der ganzen Geschichte nicht:
Warum schreibst du nicht einfach die SVERWEIS-Formeln in die Zellen C8, C9 usw.?
Bei Änderung von C7 passen sich die Ergebnisse dann automatisch an.
Du brauchst hierfür kein Makro. Welches Ziel verfolgst du also mit dem Makro?
Noch eine Frage: Was meinst du mit
"in den Zellen C8,C9,C10,... soll das Sverweis-Makro automatisch ausgeführt werden"
Wenn in alle diese Zellen die selbe Formel geschrieben würde, hätten alle das selbe Ergebnis.
Was sollte sich pon Zelle zu Zelle ändern?
Und noch eine Frage:
In der Formel steht der Bereich A5:P65536. Ausgewertet (wegen der Spalte 2) wird aber maximal
A5:B65536, also nur bis Spalte B.
Noch eine Anmerkung zum bisherigen Code:
Statt

With Range("C8")
.Formula = "=VLookup(" & Range("C7") & "," & _
"'T:\Bon\Pro\Afvul\[planning.xls]Tabelle1'!A5:P65536,2,False)"
' kannst du auch einfach schreiben:
.Formula = "=VLookup(C7," & _
"'T:\Bon\Pro\Afvul\[planning.xls]Tabelle1'!A5:P65536,2,False)"
.Formula = .Value
End With

Dann steht nicht der Wert von C7 (als Zahl oder Text) in der Formel, sondern der Name der Zelle.
(Dann brauchst du nur noch ".Formula = .Value" wegzulassen...)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: VBA-Sverweis in externe Datei
19.11.2008 15:50:00
Stephan
Hallo Erich,
danke für deine Tipps! Da ich jetzt meinen Arbeitsplatz verlasse, bekommst du morgen direkt ein Feedback und ein paar Antworten auf deine berechtigten Fragen. Grüße, Stephan
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA-Sverweis in externe Datei


Schritt-für-Schritt-Anleitung

Um einen VBA-Sverweis auf eine andere Datei durchzuführen, kannst du den folgenden Code verwenden. Achte darauf, die Pfade und Dateinamen an deine Gegebenheiten anzupassen.

Sub Sverweis()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    ActiveSheet.Unprotect Password:="xxx"

    With Range("C8")
        .Formula = "=VLookup(" & Range("C7") & "," & _
        "'T:\Bon\Pro\Avful\[planning.xls]Tabelle1'!A5:P65536, 2, False)"
        .Formula = .Value
    End With

    ActiveSheet.Protect Password:="xxx"
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Stelle sicher, dass die Datei planning.xls geöffnet ist, wenn du den SVERWEIS aus einer anderen Datei durchführst. Der Code setzt voraus, dass du Excel 2016 oder neuer verwendest.


Häufige Fehler und Lösungen

  1. Fehler beim kompilieren: Falsche Anzahl an Argumenten

    • Überprüfe die Syntax deines Makros. Achte darauf, dass die Klammern und Argumente korrekt sind, wie im Beispiel oben.
  2. Laufzeitfehler 1004 - Index außerhalb des gültigen Bereichs

    • Dies kann passieren, wenn der angegebene Bereich nicht korrekt ist oder die Datei nicht geöffnet ist. Stelle sicher, dass die Datei planning.xls existiert und die Arbeitsmappe korrekt referenziert wird.
  3. VLOOKUP führt zu einem Wert außerhalb des gültigen Bereichs

    • Überprüfe, ob die Suchkriterien in Zelle C7 vorhanden sind. Wenn nicht, wird das Ergebnis nicht gefunden.

Alternative Methoden

Falls du keinen VBA-Code verwenden möchtest, kannst du die Formel auch direkt in die Zelle eingeben. Nutze dazu:

=VLOOKUP(C7, 'T:\Bon\Pro\Avful\[planning.xls]Tabelle1'!A5:P65536, 2, FALSE)

Diese Methode ist einfach und benötigt kein Makro, sodass die SVERWEIS-Formel automatisch aktualisiert wird, wenn du die Werte in C7 änderst.


Praktische Beispiele

Angenommen, du hast eine Auftragsnummer in Zelle C7 und möchtest Informationen in Zelle C8 abrufen. Achte darauf, dass die Daten in der externen Datei korrekt sind und die Struktur mit deinem SVERWEIS auf andere Datei übereinstimmt.

Beispiel: Wenn C7 den Wert "12345" enthält, wird der SVERWEIS in C8 den entsprechenden Wert aus der externen Datei zurückgeben, solange dieser Wert in der Spalte A der Tabelle vorhanden ist.


Tipps für Profis

  • Verwende .Formula und .Value im Code, um sicherzustellen, dass die Formel nur einmal ausgeführt wird und das Ergebnis gespeichert wird.
  • Überlege, ob eine direkte Formel in einer Zelle schneller und einfacher wäre, wenn du keine besonderen Berechnungen durchführen musst.
  • Achte darauf, dass der Pfad zur Datei und die Namen der Blätter exakt stimmen, um Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den SVERWEIS automatisch ausführen lassen, wenn sich der Wert in C7 ändert? Du kannst das Makro in ein Worksheet_Change-Ereignis einfügen, um dies zu erreichen.

2. Was mache ich, wenn ich die Datei nicht finden kann? Stelle sicher, dass der Pfad korrekt ist und die Datei nicht verschoben oder umbenannt wurde. Prüfe auch, ob die Datei geöffnet ist.

3. Warum funktioniert der VLOOKUP nicht auf Englisch? Es könnte sein, dass deine Excel-Version auf Deutsch eingestellt ist. Verwende in diesem Fall die deutsche Funktion SVERWEIS anstelle von VLOOKUP.

4. Wie kann ich mehrere Zellen gleichzeitig aktualisieren? Du kannst das Makro anpassen, um mehrere Zellen in einer Schleife zu aktualisieren, oder du schreibst die SVERWEIS-Formeln direkt in die gewünschten Zellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige