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

Forumthread: VBA - Indirekte Zelle ansprechen

VBA - Indirekte Zelle ansprechen
05.03.2019 10:42:59
oip96
Hallo zusammen!
Ich habe folgendes Problem: Ich möchte erstellte Daten (Zelle A1) in eine Tabelle kopieren lassen. Die Daten müssen in eine bestimmte Zelle in der Tabelle eingeordnet werden. Diese Zelle steht stets in Zelle P3. Z.B: P3="B345".
Das heißt ich möchte meine Daten in B345 kopieren lassen, basierend auf den Informationen aus Zelle P3.
Meine Idee war eine Indirekt Funktion, leider habe ich keine Idee wie ich diese in VBA einbauen verlässlich lässt. In meiner Theorie sieht das ganze nicht wirklich kompliziert aus, klappt aber nicht:
Sub Indirekt_test ()
Range("A1").Select
Selection.Copy
Range (INDIRECT(P3))
Selection.Paste
End Sub

Dies nur als kleines Gedankenspiel meinerseits, ich hoffe ein VBA Experte kann mir weiterhelfen!
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Indirekte Zelle ansprechen
05.03.2019 11:04:56
{Boris}
Hi,
Sub Indirekt_test()
Range("A1").Copy Range(Range("P3").Text)
End Sub
VG, Boris
AW: VBA - Indirekte Zelle ansprechen
05.03.2019 11:35:05
oip96
Danke für die Hilfe, aber leider funktioniert dieser Code nicht und er wirft einen Fehler aus.
Gibt es vielleicht noch eine Alternative?
AW: VBA - Indirekte Zelle ansprechen
05.03.2019 11:46:48
{Boris}
und er wirft einen Fehler aus.
Dann verrate uns den genauen Fehlercode, denn natürlich funktioniert der Code grundsätzlich.
VG, Boris
Anzeige
AW: VBA - Indirekte Zelle ansprechen
06.03.2019 10:49:50
oip96
Der Fehler lautet:
Laufzeitfehler 1004
Methode Range für das Objekt _Global ist fehlgeschlagen
Lad mal eine Mustermappe...
06.03.2019 11:02:47
{Boris}
Hi,
...inkl. des NICHT funktionierenden Codes hoch.
VG, Boris
AW: Lad mal eine Mustermappe...
06.03.2019 11:47:18
oip96
Das ist aus Datenschutzgründen leider nicht möglich, aber ich danke Ihnen für die Hilfe!
Anzeige
Prizipiell...
06.03.2019 12:09:41
{Boris}
Hi,
...verwendest Du in VBA nicht INDIREKT, sondern liest den Inhalt der Zelle P3 mit Range("P3").Text aus und übergibst eben genau diesen Text an die äußere Range-Eigenschaft:
Range(Range("P3").Text)
Steht in P3 z.B.: B345
dann ergibt das:
Range("B345")
VG, Boris
AW: Prizipiell...
06.03.2019 14:47:10
oip96
Oh mein Gott, es hat tatsächlich geklappt!
Tausend Dank Boris :)
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Indirekte Zelle in Excel mit VBA ansprechen


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA eine Zelle indirekt anzusprechen, kannst Du folgende Schritte befolgen:

  1. Öffne den VBA-Editor mit ALT + F11.

  2. Füge ein neues Modul hinzu, indem Du im Projektfenster mit der rechten Maustaste auf "Module" klickst und "Einfügen" wählst.

  3. Kopiere den folgenden Code in das Modul:

    Sub Indirekt_test()
       Range("A1").Copy Range(Range("P3").Text)
    End Sub
  4. Stelle sicher, dass in Zelle P3 die Adresse der Zielzelle steht (z.B. "B345").

  5. Schließe den VBA-Editor und führe das Makro aus, indem Du F5 drückst oder es über die Excel-Oberfläche startest.

Mit diesem Code wird der Inhalt von Zelle A1 in die Zelle kopiert, deren Adresse in P3 steht. So kannst Du in Excel Zellen indirekt ansprechen.


Häufige Fehler und Lösungen

Ein häufiger Fehler, den Nutzer bei der Verwendung der Range-Methode erleben, ist der Laufzeitfehler 1004. Dieser Fehler tritt auf, wenn die angegebene Zelle nicht korrekt adressiert ist. Hier sind einige Lösungen:

  • Überprüfe den Inhalt von P3: Stelle sicher, dass die Adresse in P3 korrekt und nicht leer ist.
  • Verwende .Text: Wenn Du den Inhalt der Zelle P3 ausliest, verwende Range("P3").Text, um sicherzustellen, dass der Text als Adresse interpretiert wird.

Alternative Methoden

Falls Du eine andere Methode bevorzugst, um Zellen in Excel mit VBA indirekt anzusprechen, könntest Du dies auch mit einer Variablen tun:

Sub Indirekt_test_alternative()
    Dim ZielZelle As String
    ZielZelle = Range("P3").Text
    Range("A1").Copy Range(ZielZelle)
End Sub

Mit dieser Methode kannst Du die Zielzelle in einer Variablen speichern und sie dann verwenden. Dies macht den Code möglicherweise klarer und einfacher zu bearbeiten.


Praktische Beispiele

Hier einige praktische Beispiele zur Verwendung von VBA Indirekt:

  1. Kopieren von Daten in verschiedene Zellen: Wenn Du mehrere Zellen in einer Tabelle hast, die Du nach dem gleichen Muster füllen möchtest, kannst Du eine Schleife verwenden, um die Adressen dynamisch zu ändern.

    Sub Mehrere_Zellen_kopieren()
       Dim i As Integer
       For i = 1 To 10
           Range("A" & i).Copy Range(Range("P3").Text)
       Next i
    End Sub
  2. Daten basierend auf Bedingungen kopieren: Du kannst auch Bedingungen einfügen, um nur bei bestimmten Werten zu kopieren.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren und hilft, Fehler zu vermeiden.
  • Fehlerbehandlung einfügen: Implementiere On Error Resume Next, um den Code robuster zu machen und Fehler zu handhaben.
  • Dokumentation: Kommentiere Deinen Code gut, damit Du später schnell nachvollziehen kannst, was Du gemacht hast.

FAQ: Häufige Fragen

1. Warum funktioniert mein VBA-Code nicht?
Stelle sicher, dass Du die Adresse in P3 korrekt eingegeben hast und dass sie nicht leer ist.

2. Was ist der Unterschied zwischen Range("P3").Text und Range("P3").Value?
.Text gibt den angezeigten Text zurück, während .Value den tatsächlichen Wert der Zelle zurückgibt. In den meisten Fällen ist .Text besser, wenn Du mit Adressen arbeitest.

3. Kann ich mehrere Zellen gleichzeitig kopieren?
Ja, Du kannst eine Schleife verwenden, um mehrere Zellen zu kopieren, oder einen Bereich angeben, den Du kopieren möchtest.

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