Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CELLS(): Adressierung in anderem Tabellenblatt

CELLS(): Adressierung in anderem Tabellenblatt
25.08.2014 12:50:42
KlausD
Hallo,
mit CELLSS(Zeile,Spalte) lässt sich ja eine bestimmte Zelle ansprechen - aber jeweils nur in dem Tabellenblatt, das gerade selektiert ist.
Kann ich mit CELLS auch Zellen in einem nicht zuvor selektierten Tabellenblatt ansprechen? Im Moment gelingt mir das nur auf dem Umweg, das jeweilige Tabellenblatt zuvor zu selektieren und dann die Zelle ganz normal mit CELLS(Zeile, Spalte) anzusprechen. Danach muss ich dann wieder zurück ins Ausgangsblatt - mir kommt das sehr umständlich vor, aber einen direkten Weg habe ich bisher noch nicht gefunden.
Vielen Dank schon mal für alle sachdienlichen Hinweise.
Klaus

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CELLS(): Adressierung in anderem Tabellenblatt
25.08.2014 12:53:28
Daniel
Hi
du kannst Zellen auf nicht selektierten Tabellenblättern ansprechen, wenn du den Tabellenblattnamen davorsetzt:
Sheets("Tabelle1").Cells(1, 1)
wichtig hierbei ist, dass du dann die Zellen nicht selektierst, sondern die Befehle direkt auf diese Zelle anwendest.
Gruß Daniel

Anzeige
AW: CELLS(): Adressierung in anderem Tabellenblatt
25.08.2014 13:44:13
Luschi
Hallo Daniel,
auch Deine Lösung ist nur die halbe Wahrheit. 'Sheets' repräsentiert alle Blätter, die auf der Excel-Oberfläche darstellbar sind.
Einige von denen besitzen aber kein Zell-Raster. Deshalb sollte man die Zellraster-Tabellenblätter auch so ansprechen:
Workheets("Tabelle1").Cells(1, 1)
Wer hier meint, das ist doch pingelig, dann erinnert Euch an die Katastrophe der ersten Ariadne5-Rakete: http://www.deutschlandfunk.de/der-absturz-der-ariane-5.676.de.html?dram:article_id=25637
Auch hier hat etwas Belanglosen in die Katastrophe geführt!
Gruß von Luschi
aus klein-Paris

Anzeige
AW: CELLS(): Adressierung in anderem Tabellenblatt
25.08.2014 13:53:59
Daniel
Solange du die Sheets über den Namen ansprichst, kann da nichts passieren, weil auch die Diagramme nur Namen bekommen dürfen, die in der Gesamtliste eindeutigt sind, damit sind dann Verwechslungen ausgeschlossen (dh es ist nicht möglich, gleichzeitig ein Blatt "xxx" und ein Chart "xxx" zu erstellen)
Der angesprochene Fehler (Überlauf) kommt wahrscheinlich daher, dass mal wieder jemand Speicherplatz sparen wollte und eine Variable zu knapp dimensioniert hat (Integer statt Long, so wie hier ja auch gerne für Zeilenummern)
die Untrerscheidung zwischen Sheet und Worksheet ist dann notwendig, wenn man mit einer For-Each-Schleife arbeitet (um dann bzw die Charts automatisch auszuschließen) oder wenn die Blätter über die Indexnummer angesprochen werden.
Gruß Daniel

Anzeige
AW: CELLS(): Adressierung in anderem Tabellenblatt
25.08.2014 14:18:11
Luschi
Hallo Daniel,
was für den allgemeinen Nutzer machbar ist, das tut er auch. Damit ist das 1. Gesetz von
Murphy (siehe http://de.wikipedia.org/wiki/Murphys_Gesetz ) erfüllt!, nämlich:
„Alles, was schiefgehen kann, wird auch schiefgehen.“
Wer sagt Dir denn, daß nicht zuerst die Workscheets-Tabelle umbenannt wird (Chef-Anweisung)
und dann die Chart-Tabelle (persönliche Geschmachssache).
Ich kann es einfach nicht verstehen, warum Faulheit in der Tipparbeit von Vba-Code immer noch _ solch hohen Stellenwert hat.

Untrerscheidung zwischen Sheet und Worksheet ist dann notwendig,..
ist totaler Blödsinn, denn wer nicht bereit ist, sauber zu arbeiten, wird auch dann, wenn es darauf ankommt, - einfach versagen.
Gruß von Luschi
aus klein-Paris

Anzeige
...Weshalb ich auch dann, wenn mal mit ...
25.08.2014 16:43:54
Luc:-?
…einer Selection gearbeitet wdn kann bzw muss, bei Bereichen auch stets die .RangeSelection-Eigenschaft des jeweiligen Fensters und zumeist ActiveWorkbook statt ThisWorkbook (oder redigierte Intern­Namen) verwende, Luschi;
Sheets/Worksheets unterscheide ich allerdings auch noch zu selten… ;-)
Gruß, Luc :-?

Anzeige
AW: CELLS(): Adressierung in anderem Tabellenblatt
25.08.2014 22:01:33
KlausD
Hallo, Luschi und Daniel,
vielen Dank für Eure prompten Hilfestellungen. Ich muss gestehen, die Feinheiten zwischen Sheets und Worksheets habe ich noch nicht ganz nachvollziehen können, aber auf jeden Fall ist mir bei meinem Problem schon jetzt geholfen.
Grüße,
Klaus
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

CELLS(): Adressierung in anderem Tabellenblatt in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Zelle in einem anderen Tabellenblatt mit Excel VBA anzusprechen, kannst du den folgenden Befehl verwenden:

Sheets("Tabellenblattname").Cells(Zeile, Spalte).Value = Wert
  1. Ersetze "Tabellenblattname" durch den Namen des gewünschten Tabellenblatts.
  2. Setze Zeile und Spalte auf die entsprechenden Zahlen, um die Zelle zu definieren.
  3. Wert ist der Wert, den du in die Zelle schreiben möchtest.

Beispiel: Um den Wert "Test" in die Zelle A1 eines anderen Blatts namens "Daten" zu schreiben, verwende:

Sheets("Daten").Cells(1, 1).Value = "Test"

Häufige Fehler und Lösungen

  1. Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"

    • Lösung: Überprüfe den Namen des Tabellenblatts. Stelle sicher, dass der Name korrekt geschrieben ist.
  2. Fehler: "Objekt erforderlich"

    • Lösung: Stelle sicher, dass du das richtige Objekt ansprichst. Verwende Worksheets, wenn du mit einem Arbeitsblatt arbeitest, das kein Zellraster hat.

Alternative Methoden

Eine alternative Methode, um Zellen in einem anderen Tabellenblatt anzusprechen, ist die Verwendung des Worksheets-Objekts:

Worksheets("Tabellenblattname").Cells(Zeile, Spalte).Value = Wert

Diese Methode ist besonders nützlich, wenn du sicherstellen möchtest, dass das angesprochene Objekt ein Arbeitsblatt ist.


Praktische Beispiele

Beispiel 1: Wert aus einem anderen Blatt lesen

Um einen Wert aus einer Zelle in einem anderen Blatt zu lesen, kannst du Folgendes verwenden:

Dim wert As Variant
wert = Sheets("Daten").Cells(1, 1).Value

Beispiel 2: Excel-Auswahlliste aus einem anderen Tabellenblatt

Wenn du eine Auswahlliste (Dropdown) in einem Blatt erstellen möchtest, die auf Werten aus einem anderen Blatt basiert, kannst du dies wie folgt tun:

With Sheets("Zielblatt").Range("A1").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Daten!A1:A10"
End With

Tipps für Profis

  • Verwende Long anstelle von Integer: Wenn du Zeilen oder Spalten in VBA ansprechen möchtest, ist es besser, Long zu verwenden, um Überlauf-Fehler zu vermeiden.

  • Benutze With-Anweisungen: Um den Code effizienter zu gestalten, kannst du With-Anweisungen verwenden, um mehrere Eigenschaften eines Objekts zu ändern.

With Sheets("Daten").Cells(1, 1)
    .Value = "Neuer Wert"
    .Font.Bold = True
End With

FAQ: Häufige Fragen

1. Wie kann ich ein Tabellenblatt ansprechen, wenn es umbenannt wurde? Du kannst immer den Namen des Blattes verwenden. Achte darauf, den aktuellen Namen zu verwenden, um Fehler zu vermeiden.

2. Was ist der Unterschied zwischen Sheets und Worksheets? Sheets spricht alle Blätter an, einschließlich Diagramme, während Worksheets nur Arbeitsblätter anspricht, die ein Zellraster haben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige