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

Excel Formel "Indirekt" in VBA Fehler

Forumthread: Excel Formel "Indirekt" in VBA Fehler

Excel Formel "Indirekt" in VBA Fehler
18.02.2020 12:08:25
Paul
Hallo zusammmen
ich versuche, Bilder variabel über eine Indirekt-Formel in VBA zu gestalten. Manuelle Eingabe funktioniert einwandfrei.
Mit Aufnahme des Makrorecorders passiert immer wieder der Fehler, dass die markierte Zelle O5 durch R5C15 (schwarz fett unten) ersetzt wird, wenn ich bei der Aufnahme des Makrorekorders die Zelle mit der Maus markiere.
Gebe ich die Zelle manuell ein, erscheint die Angabe... TestLiga!'O5'... (Diese Gänsefüßchen verhindern die Funktion der Formel am Ende. Wenn ich diese lösche, funktioniert es einwandfrei.
Meine Frage ist somit, wie ich die Indirekt-Formel in VBA eingeben muss.
Danke für jede Hilfe.
Anbei der Code.
Danke P.
wsM.Range("B2").Copy
wsL.Range("E5").Select
ActiveSheet.Pictures.Paste(Link:=True).Select
Application.CutCopyMode = False
Selection.Formula = "Mannschaft" & 1 & ""
ActiveWorkbook.Names.Add Name:="Test", RefersToR1C1:= _
"=INDIRECT(""Mannschaften!$B"" & TestLiga!R5C15)"
ActiveWorkbook.Names("Test").Comment = ""
Selection.Formula = "Test"
Anzeige

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

Betreff
Datum
Anwender
Anzeige
doppelt! owt
18.02.2020 12:11:29
Torsten
AW: Excel Formel "Indirekt" in VBA Fehler
19.02.2020 12:18:16
Paul
Ok, das löst das Problem nicht. Auch nach längerem Googeln habe ich keine Antwort dazu gefunden. Würdest du mir dann den Link senden?
Danke
Link wohin?
19.02.2020 12:30:03
Rudi
Hallo,
sowohl
ActiveWorkbook.Names.Add Name:="Test", RefersToR1C1:= _
"=INDIRECT(""Mannschaften!$B"" & TestLiga!R5C15)"
als auch
ActiveWorkbook.Names.Add Name:="Test", RefersTo:= _
"=INDIRECT(""Mannschaften!$B"" & TestLiga!$O$5)"
haben als Bezug
=INDIREKT("Mannschaften!$B" & Testliga!$O$5)
zum Ergebnis
Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Indirekte Formeln in VBA korrekt verwenden


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA)-Editor zu öffnen.

  2. Erstelle ein neues Modul: Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den Code ein: Verwende den folgenden Code als Grundlage, um eine INDIREKT-Formel in VBA einzufügen:

    Sub IndirektFormel()
        Dim wsM As Worksheet
        Dim wsL As Worksheet
        Set wsM = ThisWorkbook.Sheets("Mannschaften")
        Set wsL = ThisWorkbook.Sheets("TestLiga")
    
        wsM.Range("B2").Copy
        wsL.Range("E5").Select
        ActiveSheet.Pictures.Paste(Link:=True).Select
        Application.CutCopyMode = False
    
        ' Beispiel für die Verwendung der INDIRECT-Funktion
        ActiveWorkbook.Names.Add Name:="Test", RefersToR1C1:= _
            "=INDIRECT(""Mannschaften!$B"" & TestLiga!R5C15)"
    
        Selection.Formula = "Test"
    End Sub
  4. Ersetze die Zellreferenzen: Stelle sicher, dass die Zellreferenzen in deinem Code korrekt sind. Du kannst TestLiga!R5C15 durch eine spezifische Zelle ersetzen, falls nötig.

  5. Starte das Makro: Schließe den VBA-Editor und starte das Makro über Entwicklertools > Makros.


Häufige Fehler und Lösungen

  • Fehler bei der Zellreferenz: Wenn du die Zelle O5 manuell eingibst und sie durch R5C15 ersetzt wird, achte darauf, die richtige Referenz zu verwenden. INDIREKT erwartet die Adresse als Text.

  • Gänsefüßchen in der Formel: Achte darauf, dass die Gänsefüßchen korrekt gesetzt sind. Die Verwendung von "" ist notwendig, um innerhalb von VBA Text darzustellen.

  • Referenzierung von Blättern: Stelle sicher, dass die Blattnamen korrekt geschrieben sind. Ein Tippfehler kann zu einem Fehler führen.


Alternative Methoden

  • Direkte Zellreferenzierung: Anstelle der INDIREKT-Formel kannst du auch direkte Zellreferenzen verwenden, um die Ergebnisse zu erhalten. Zum Beispiel:

    ActiveWorkbook.Names.Add Name:="Test", RefersToR1C1:= _
        "=Mannschaften!$B" & wsL.Range("O5").Value
  • Verwendung von Arrays: In einigen Fällen kann es sinnvoll sein, die Werte in ein Array zu laden und dann die gewünschten Zellen zu referenzieren.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du INDIREKT in VBA einsetzen kannst:

  • Zugriff auf dynamische Zellwerte:

    Dim cellValue As String
    cellValue = wsL.Range("O5").Value
    ActiveWorkbook.Names.Add Name:="DynamicRef", RefersToR1C1:= _
        "=INDIRECT(""Mannschaften!$B"" & " & cellValue & ")"
  • Verwendung in Formeln:

    wsL.Range("A1").Formula = "=INDIRECT(""Mannschaften!$B"" & O5)"

Tipps für Profis

  • Vermeide Hardcodierung: Nutze Variablen, um Zellreferenzen flexibler zu gestalten. Dadurch wird dein Code wartungsfreundlicher.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Probleme bei der Ausführung deines Codes frühzeitig zu erkennen.

  • Testen: Teste deine Makros regelmäßig, um sicherzustellen, dass sie unter verschiedenen Bedingungen korrekt funktionieren.


FAQ: Häufige Fragen

1. Was kann ich tun, wenn die INDIREKT-Formel nicht funktioniert?
Überprüfe, ob die Zellreferenzen korrekt sind und ob die Blätter richtig benannt sind. Achte auch auf die Gänsefüßchen in der Formel.

2. Kann ich die INDIREKT-Formel in VBA in einer Schleife verwenden?
Ja, du kannst die INDIREKT-Formel innerhalb einer Schleife verwenden, um dynamisch auf verschiedene Zellwerte zuzugreifen.

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