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

Forumthread: Tabelle in VBA ansprechen

Tabelle in VBA ansprechen
Niko
Hallo zusammen,
im Projektexplorer werden die Tabellen mit Tabelle1 usw. angezeigt und dahinter steht in Klammern der individuelle Blattname in Klammern - z.B. (Fach 1).
Im Code beziehe ich mich normalerweise mit Worksheets ("Fach 1")... auf diese Tabelle.
Ich möchte nun den Blattnamen variabel gestalten und mich im Code auf den Tabellennamen 'Tabelle1' beziehen. Dabei erhalte ich allerdings die Meldung 'Index außerhalb des gültigen Bereichs' angezeigt.
Wie muss der Code lauten wenn ich mich auf den Namen 'Tabelle1' beziehen will?
Vielen Dank für eure Mühe und schönen Tag.
Gruß
Niko
Anzeige
AW: Tabelle in VBA ansprechen
03.04.2012 09:30:28
ChrisL
Hi Niko
Diese Bezeichnung wird durch die Reihenfolge der Tabellen bestimmt (ein Verschieben ändert die Nummer). Somit kannst du direkt die Nummer ansprechen.
Worksheets(1)
Worksheets(2)
usw.
cu
Chris
vielen Dank für deinen Tipp (owT)
03.04.2012 09:57:40
Niko
Hi
Falsch
03.04.2012 11:02:14
Rudi
Hallo,
Tabelle1 bleibt immer Tabelle1, egal an welcher Position sich das Blatt befindet.
Die Liste ist alphabetisch nach Codenamen.
Die Worksheets mit ihrem Index anzusprechen halte ich nicht für sinnvoll.
Gruß
Rudi
Anzeige
teilweise falsch :)
03.04.2012 11:06:16
ChrisL
Hi Rudi
Habe eben deine Antwort gelesen und du hast natürlich recht. Mit Codename unabhängig von Reihenfolge zu arbeiten ist eindeutig die besser Lösung.
Wenn ich aber den Codename nicht verändere (Default) und z.B. Tabelle1 auf Platz 3 schiebe, dann ändert sich bei mir der Codename auf Tabelle3, während die Tabellenbezeichnung weiterhin Tabelle1 ist. Daher meine Schlussfolgerung :)
Danke für die Ergänzung und Gruss
Chris
Anzeige
AW: teilweise falsch :)
03.04.2012 11:15:53
Rudi
Hallo,
dann ändert sich bei mir der Codename auf Tabelle3,
bei mir nicht. Wäre auch fatal.
Gruß
Rudi
AW: teilweise falsch :)
03.04.2012 11:35:55
ChrisL
Hi Rudi
Ich öffne eine neue Mappe (3 Tabellenblätter Standard). Verschiebe Tabelle1 auf Platz 3, dann zeigt der VBA Editor:
Tabelle1 (Tabelle2)
Tabelle2 (Tabelle3)
Tabelle3 (Tabelle1)
Version Excel 2003
Gruss
Chris
Anzeige
AW: teilweise falsch :)
03.04.2012 12:14:06
Reinhard
Hallo Chris,
in XL 2000:
Userbild
Gruß
Reinhard
genauso in 2007 owT
03.04.2012 12:16:36
Rudi
Bei mir nicht
03.04.2012 12:19:41
Reinhard
Hallo Rudi, Chris,
in XL 2007:
Userbild
Gruß
Reinhard
Anzeige
nicht in meinem 2007
03.04.2012 12:36:55
Rudi
Hallo,
wie schon gesagt: Ein derartiges Verhalten wäre fatal.
Der 1.4. ist doch schon vorbei!
Gruß
Rudi
Alle haben Recht :-)
03.04.2012 13:03:29
Reinhard
Hallo Rudi,
ich schließe in XL 2007 alle Mappen und den Editor, in der Schnellstartleiste auf das Symbol für neu.
Nun Rechtsklick auf "tabelle1", Verschieben wählen dann "ans Ende stellen".
Nun den Editor mit Alt+F11.
Im Projektexplorer sieht man nun:
Tabelle1 (Tabelle2)
Tabelle2 (Tabelle3)
Tabelle3 (Tabelle1)
Wenn ich nur die Mappen schließe aber den Editor offen lassen, dann "Neu", wieder Tabelle1 verschiebe
ergibt sich im Editor:
Tabelle1 (Tabelle1)
Tabelle2 (Tabelle2)
Tabelle3 (Tabelle3)
Gruß
Reinhard
Anzeige
kann ich bestätigen, nicht gut ;-( oT.
03.04.2012 18:20:56
Tino
AW: kann ich bestätigen, nicht gut ;-( oT.
03.04.2012 18:42:50
Reinhard
Hallo Tino,
danke dir.
In XL2007 ist der "Fehler" reprozudierbar. Also XL2007 beenden, Neu starten und dann wie beschrieben
vorgehen. Immer das Gleiche. Je nachdem ob der Editor geschlossen ist oder nicht wenn ich da verschiebe
so gibt es unterschiedliche Reihenfolgen/Zuweisungen im Editor.
In XL2000 passiert das nicht, da passiert das was Rudi sagt, egal was ich mit dem Editor mache
während ich verschiebe.
Hast du die Vollversion von Office 2007?
Ich nehme an Rudi hat die. Ich habe nur Office 2007 Home und Student, gekauft bei dem Blöd-Markt.
Vielleicht liegt es daran?
Andererseits hat ja ChrisL auch das Problem mit seinem XL2003.
Und "nicht gut" ist das in der Tat :-(
Wer Code codiert der auf Fremdrechnern laufen soll und der im Code die Tabellencodenamen benutzt
hat ein echtes Problem.
Deshalb Frage noch offen.
Gruß
Reinhard
Anzeige
AW: kann ich bestätigen, nicht gut ;-( oT.
03.04.2012 19:02:05
Tino
Hallo,
privat habe ich auch nur die Home und Student.
Habe jetzt aber mal etwas Code in ein Modul gepackt und diesen die Tabelle1 zugewiesen,
jetzt passt die Zuweisung, wahrscheinlich also nur solange kein Code enthalten ist, also halb so schlimm. ;-)
Sub Test()
Tabelle1.Cells(1, 1).Value = Now
End Sub
Gruß Tino
Anzeige
AW: kann ich bestätigen, nicht gut ;-( oT.
03.04.2012 19:35:35
Reinhard
Hallo Tino,
"privat" klingt sehr gut :-)
Ich deute das so daß du in der Firma Vollversionen hast.
Wenn du so nett bist und das daran testest kann man je nachdem die H&S Version als Fehlergrund ausschließen.
"wahrscheinlich" klingt nicht ganz so gut, ist halt nicht 1000 ‰ig für mich :-(
Gruß
Reinhard
Anzeige
...und warum legt ihr den internen TabNamen ...
03.04.2012 19:28:00
Luc:-?
…nicht selbst fest, Leute?
Dann ändert sich der 1. nicht mehr und ist 2. auch eindeutig.
Gruß Luc :-?
AW: ...und warum legt ihr den internen TabNamen ...
03.04.2012 19:40:13
Reinhard
Hallo Luc,
ich bin nicht der Schnellste, bislang war es nur Trockentraining mit leeren Modulen.
Tino geht die Sache schon mit Makros an. Ich eile ihm nach *schlecht zu Fuß* :-))
Gruß
Reinhard
Anzeige
Vollversion
03.04.2012 20:04:45
Rudi
Hallo,
die Version hat imho nur was mit den Umfang des Office-Pakets zu tun. Die Funktion der Komponenten bleibt (außer 2010 Starter und die kann kein VBA)
Ich habs in der Firma getestet und da ist sicherlich kein H&S. Enterprise soviel ich weiß.
Gruß
Rudi
AW: Tabelle in VBA ansprechen
03.04.2012 11:03:48
Beverly
Hi Niko,
du kannst ein Tabellenblatt prinzipiell auch direkt mit dem Internen Namen ansprechen. Z.B. gibt die folgende Codezeile
MsgBox Tabelle1.Name

den Namen des Worksheets wieder, der auf dem Tabellenreiter steht (bzw. im VBA-Editor der in Klammern stehende Name) - also in deinem Fall "Fach 1". Der Vorteil dieser Variante ist, dass du die Reihenfolge der Tabellenblätter beliebig verändern kannst - im Gegensatz zu Chris' Vorschlag - ohne dass sich dann möglicherweise auf das falsche Tabellenblatt bezogen wird.


Anzeige
vielen Dank für den Tipp - alles bestens (owT)
03.04.2012 15:45:52
Niko
Hi
ohne Worksheets
03.04.2012 10:56:41
Rudi
Hallo,
was du da siehst sind die Codenamen der Tabellen. Die kannst du einfach so verwenden.
Ich würde sie aber individuell anpassen. z.B.wsFach01
wsFach01.Range("A1")="x"
Vorteil: Weder die Namen der Blätter noch die Reihenfolge spielen eine Rolle.
Gruß
Rudi
funktioniert einwandfrei - vielen Dank (owT)
03.04.2012 15:41:55
Niko
Hi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Tabelle in VBA ansprechen


Schritt-für-Schritt-Anleitung

Um eine Tabelle in VBA anzusprechen, kannst Du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Projekt auswählen: Wähle im Projekt-Explorer das entsprechende Projekt aus.

  3. Modul hinzufügen: Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf den Projektnamen klickst und „Einfügen“ -> „Modul“ auswählst.

  4. Code eingeben: Um eine Tabelle mit ihrem Namen anzusprechen, benutze den folgenden Code:

    Sub Beispiel()
       Worksheets("Fach 1").Range("A1").Value = "Hallo Welt"
    End Sub

    Möchtest Du die Tabelle mit ihrem Codename ansprechen, verwende:

    Sub BeispielMitCodename()
       Tabelle1.Range("A1").Value = "Hallo Welt"
    End Sub
  5. Code ausführen: Führe den Code aus, indem Du den Cursor in den Code setzt und F5 drückst oder auf „Ausführen“ klickst.


Häufige Fehler und Lösungen

  • Fehler: 'Index außerhalb des gültigen Bereichs'

    • Ursache: Dieser Fehler tritt auf, wenn Du versuchst, auf ein Tabellenblatt zuzugreifen, das nicht existiert oder falsch benannt ist.
    • Lösung: Stelle sicher, dass der Tabellenblattname korrekt ist und dass das Blatt existiert.
  • Fehler: 'Objektvariable oder With-Blockvariable nicht gesetzt'

    • Ursache: Dies kann passieren, wenn Du versuchst, auf ein Blatt zuzugreifen, das nicht initialisiert wurde.
    • Lösung: Überprüfe, ob das Blatt existiert oder ob Du den Codename korrekt verwendest.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, ein Excel-Tabellenblatt in VBA anzusprechen:

  1. Index-basiertes Ansprechen:

    Worksheets(1).Range("A1").Value = "Hallo"
  2. Codename-basiertes Ansprechen: Wenn Du den Codename der Tabelle verwendest, bleibt Dein Code stabil, egal in welcher Reihenfolge die Blätter angeordnet sind:

    Tabelle1.Range("A1").Value = "Hallo"
  3. Ansprechen einer intelligenten Tabelle:

    Dim tbl As ListObject
    Set tbl = Tabelle1.ListObjects(1)
    tbl.ListColumns(1).DataBodyRange.Cells(1, 1).Value = "Hallo"

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du Tabellen in VBA ansprechen kannst:

  • Wert in eine Zelle schreiben:

    Sub SchreibeWert()
       Tabelle1.Cells(1, 1).Value = "Neuer Wert"
    End Sub
  • Wert aus einer Zelle lesen:

    Sub LeseWert()
       Dim meinWert As Variant
       meinWert = Tabelle1.Cells(1, 1).Value
       MsgBox meinWert
    End Sub
  • Über alle Tabellenblätter iterieren:

    Sub AlleTabellenblätterAnsprechen()
       Dim ws As Worksheet
       For Each ws In ThisWorkbook.Worksheets
           MsgBox ws.Name
       Next ws
    End Sub

Tipps für Profis

  • Verwende Codenamen: Arbeite mit Codenamen, um Probleme mit der Reihenfolge der Blätter zu vermeiden.
  • Dokumentation: Füge Kommentare in Deinem Code hinzu, um die Lesbarkeit zu erhöhen.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler abzufangen.

FAQ: Häufige Fragen

1. Wie kann ich ein anderes Tabellenblatt ansprechen? Um ein anderes Tabellenblatt anzusprechen, verwende den Namen oder den Codename der Tabelle, z.B. Worksheets("Blattname") oder Tabelle2.

2. Funktionieren diese Codes in allen Excel-Versionen? Die Codes funktionieren in den meisten Excel-Versionen, einschließlich Excel 2000, 2003, 2007 und höher. Achte darauf, dass einige Funktionen und Eigenschaften je nach Version variieren können.

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