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

Richtige Verwendung von Index-Formel in VBA

Forumthread: Richtige Verwendung von Index-Formel in VBA

Richtige Verwendung von Index-Formel in VBA
06.11.2015 12:48:10
Index-Formel
Hallo,
ich möchte eine Index-Formel in einem Event verwenden.
In Excel funktioniert die Formel aber mir ist nicht klar, wie ich dieselbe Formel in VBA verwenden kann.
Kann mir jemand weiterhelfen ?
Mein Versuch:
txtRef = INDEX(Worksheets(9)!B:B;MATCH(1;Worksheets(9)!A:A;0))
Vielen Dank im Voraus,
Mike

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Richtige Verwendung von Index-Formel in VBA
06.11.2015 13:03:38
Index-Formel
...hab die Lösung selber gefunden - danke...

AW: Richtige Verwendung von Index-Formel in VBA
06.11.2015 13:03:47
Index-Formel
Hallo,
txtRef = Application.INDEX(Worksheets(9).Range("B:B"),Application.MATCH(1,Worksheets(9).Range("A:A"),0))
Aber warum nicht per SVERWEIS()?
txtRef = application.vlookup(1,Workshets(9).Range("A:B"),2,0)
Gruß
Rudi

Anzeige
AW: Richtige Verwendung von Index-Formel in VBA
06.11.2015 13:26:53
Index-Formel
Hallo Rudi,
vielen Dank - der Ansatz gefällt mir. :-)
Noch ein paar Fragen dazu:
1) Brauche ich hier nicht noch WorksheetFunction vor der eigentlichen Formel ?
2) Wie definiere ich hier txtRef korrekt ? Dim txtRef As String ?
Gruß,
Mike

;
Anzeige
Anzeige

Infobox / Tutorial

Richtige Verwendung der Index-Formel in VBA


Schritt-für-Schritt-Anleitung

Um die INDEX-Formel in VBA zu verwenden, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Einfügen eines Moduls: Klicke mit der rechten Maustaste auf „VBAProject (DeineDateiName)“ > Einfügen > Modul.

  3. Code eingeben: Verwende den folgenden Code, um die INDEX-Formel zu implementieren:

    Dim txtRef As String
    txtRef = Application.Index(Worksheets(9).Range("B:B"), Application.Match(1, Worksheets(9).Range("A:A"), 0))
  4. Anpassen der Werte: Ersetze die 9 durch die Anzahl des Arbeitsblatts, das du verwenden möchtest.

  5. Ausführen des Codes: Schließe den VBA-Editor und führe den Code über das Excel-Makro aus.


Häufige Fehler und Lösungen

  • Falsche Schreibweise: Achte darauf, dass du Application.Index und nicht Application.INDEX schreibst.
  • Referenzierung von Arbeitsblättern: Stelle sicher, dass das Arbeitsblatt existiert und die korrekten Zellreferenzen verwendet werden.
  • Typkonflikte: Wenn du txtRef als String definierst, aber es einen numerischen Wert zurückgibt, könnte es zu einem Typkonflikt kommen. Verwende Dim txtRef As Variant, um dies zu vermeiden.

Alternative Methoden

Neben der Verwendung der INDEX-Formel in VBA gibt es alternative Methoden, um ähnliche Ergebnisse zu erzielen:

  • Verwendung von SVERWEIS: Du kannst Application.VLookup verwenden, um Werte aus einer Tabelle zu suchen. Der Code sieht wie folgt aus:

    txtRef = Application.VLookup(1, Worksheets(9).Range("A:B"), 2, 0)
  • Nutzung von WorksheetFunction: Mit WorksheetFunction.Index und WorksheetFunction.Match kannst du dieselbe Funktionalität erreichen, allerdings in einer anderen Syntax.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir bei der Implementierung der INDEX-Formel in VBA helfen:

  1. Einfaches Beispiel:

    Dim txtRef As Variant
    txtRef = Application.Index(Sheets("Daten").Range("B1:B10"), 5)
  2. Mit Match:

    Dim txtRef As Variant
    txtRef = Application.Index(Sheets("Daten").Range("B1:B10"), Application.Match("Suchbegriff", Sheets("Daten").Range("A1:A10"), 0))

Diese Beispiele zeigen, wie du INDEX und MATCH kombinieren kannst, um Werte dynamisch aus deinen Tabellen abzurufen.


Tipps für Profis

  • Verwende Dim für Variablen: Definiere deine Variablen klar, um die Lesbarkeit des Codes zu verbessern.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen mit On Error Resume Next, um unerwartete Fehler abzufangen.
  • Debugging: Nutze die Debug.Print-Anweisung, um Zwischenergebnisse in der Direktansicht auszugeben, was dir helfen kann, Probleme zu identifizieren.

FAQ: Häufige Fragen

1. Muss ich WorksheetFunction verwenden?
Nein, du kannst die INDEX- und MATCH-Funktionen auch direkt mit Application.Index verwenden, wie im Beispiel gezeigt.

2. Wie definiere ich txtRef korrekt?
Es hängt davon ab, was du mit dem Rückgabewert machen möchtest. Wenn es ein Text ist, verwende Dim txtRef As String. Für numerische Werte könnte Dim txtRef As Variant besser sein.

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