Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bezug auf internen Tabellennamen

Bezug auf internen Tabellennamen
Daniel
Guten morgen zusammen,
wie kann ich Bezug auf den internen Tabellennamen eines anderen Workbooks nehmen?
Bsp: ....=Workbooks.Worksheets("Tabelle1").Cells.... funktioniert!!
....=Workbooks.internTabelle1.Cells funktioniert nicht!! ("internTabelle1" ist der interne Tabellenname
von Tabelle1)
Vielen Dank und Grüße
Daniel
AW: Bezug auf internen Tabellennamen
01.10.2010 08:35:51
JogyB
Hallo Daniel,
einfach internTabelle1.Cells wenn es im selben Workbook wie der Code ist bzw.
Workbooks("Dateiname_ohne_Pfad_aber_mit_Endung").internTabelle1.Cells
wenn es in einer anderen Arbeitsmappe ist.
Gruß, Jogy
AW: Bezug auf internen Tabellennamen
01.10.2010 08:44:25
Daniel
Hallo Jogy,
Danke für deine Antwort!
Ist Workbooks("Dateiname_ohne_Pfad_aber_mit_Endung").internTabelle1.Cells getestet? Bei mir kommt Laufzeitfehler 438 "Objekt untersützt Methode nicht..."
Gruß
Daniel
AW: Bezug auf internen Tabellennamen
01.10.2010 09:04:59
Nepumuk
Hallo Daniel,
im Prinzip nur so:
Public Sub Test()
    Dim objSheet As Worksheet
    Dim blnFound As Boolean
    For Each objSheet In Workbooks(1).Worksheets
        If objSheet.CodeName = "Tabelle1" Then
            blnFound = True
            Exit For
        End If
    Next
    If blnFound Then
        objSheet.Cells(1, 1).Value = "ABC"
    Else
        MsgBox "Tabelle1 nicht gefunden"
    End If
End Sub

Grund: Die Tabelle1 in der anderen Mappe als Objekt ist kein Bestandteil des Projektes in dem sich der Code befindet. Sie ist eine Eigenschaft der Workbook-Eigenschaft und kann nur über deren Item-Eigenschaft angesprochen werden. Diese erwartet aber nicht den Objektnamen, sondern die Index-Nummer oder den Excel-Namen.
Gruß
Nepumuk
Anzeige
AW: Bezug auf internen Tabellennamen
01.10.2010 09:23:18
Daniel
Hallo Nepumuk,
sowas hab ich mir schon fast gedacht :-)
Kann ich den Tabellenblattindex fest vergeben oder hat das erste Tabellenblatt automatisch Index=1?
Wie mache ich die Zuweisung per Indexnummer, also z.B. Workbooks(...).Worksheets.Index(1)....
Danke und Grüße
Daniel
AW: Bezug auf internen Tabellennamen
01.10.2010 09:34:33
Nepumuk
Hallo Daniel,
die Indexnummern werden von Excel automatisch vergeben. Wobei die Sheets-Eigenschaft und die Worksheets-Eigenschaft unabhängige Nummern vergeben. Ist das erst Blatt in der Mappe ein Chart und das zweite Blatt eine Tabelle, hat das Chart in der Sheets-Auflistung die Nummer 1 die Tabelle die Nummer 2. In der Worksheets-Auflistung wird das Chart nicht aufgeführt und die Tabelle hat die Index-Nummer 1.
Gruß
Nepumuk
Anzeige
AW: Bezug auf internen Tabellennamen
01.10.2010 09:53:41
JogyB
Hallo Daniel,
es geht schon, allerdings verdammt umständlich
With Workbooks(DATEINAME)
.Sheets(.VBProject.VBComponents("ta"). _
Properties(7).Value).Cells(1, 1) = Now
End With

Gruß, Jogy
AW: Bezug auf internen Tabellennamen
01.10.2010 10:06:42
Nepumuk
Hallo Jogy,
ABER der Zugriff auf das VBA-Projekt muss erlaubt sein plus das Projekt darf nicht geschützt sein. Also in der Praxis doch wenig realistisch und nur für den privaten Gebrauch tauglich.
Gruß
Nepumuk
AW: Bezug auf internen Tabellennamen
01.10.2010 10:12:15
JogyB
Hallo Nepumuk,
da hast Du natürlich recht... wäre jetzt auch nicht die Methode, die ich verwenden würde.
Und das mit dem Zugriff auf das VBA-Projekt übersehe ich immer, weil ich es bei mir eben schon erlaubt ist.
Gruß, Jogy
Anzeige
AW: Bezug auf internen Tabellennamen
01.10.2010 09:33:38
JogyB
Hallo Daniel,
mein Fehler, hatte ich jetzt nicht getestet. Von der Logik her hätte es funktionieren sollen, aber Microsoft scheint da das Objektmodell nicht ganz konsequent durchzuziehen.
Gruß, Jogy
AW: Bezug auf internen Tabellennamen
01.10.2010 09:46:26
Nepumuk
Hallo Jogy,
das Objektmodell ist konsequent. Die Tabellen sind eine Eigenschaft des Workbook-Objektes. Es gibt kein Objekt welches auf der obersten Ebene dynamisch, je nach Anzahl der Tabellen, mal eine mal einhundert Eigenschaften hat. Das können nur Auflistungsobjekte und die können fühestens in der zweiten Ebene eines Objektes erscheinen.
Überleg doch mal. Du hast eine Klasse Workbook. Diese soll eine Klasse Worksheet enthalten. Wie soll das dynamisch gehen? Bei jedem hinzufügen / löschen einer Tabelle den Code ändern um ein neues Objekt mehr oder weniger in der Klasse zu haben? Also muss die Klasse Worksheets eine eigene Klasse sein und in der Klasse Workbooks hast du ein dynamisches Array mit den Verweisen auf die Worksheets-Klassen.
Gruß
Nepumuk
Anzeige
AW: Bezug auf internen Tabellennamen
01.10.2010 10:04:35
JogyB
Hallo Nepumuk,
und wie wird das dann bei den UserForms gemacht?
Ich kann dort jedes Control mit UserForm.Name und UserForm.Controls("Name") ansprechen. Das war die Analogie, an die ich gedacht habe - ich bin kein Informatiker, deswegen sind mir hier vielleicht manche Feinheiten nicht so richtig bewusst.
Gruß, Jogy
AW: Bezug auf internen Tabellennamen
01.10.2010 10:22:36
Nepumuk
Hallo Jogy,
UserForm.ControlName
gilt aber nur für Controls die im Entwurfsmodus hinzugefügt wurde. Zur Laufzeit hinzugefügte Controls können auch nur über die Item-Eigenschaft des Controls-Auflistungsobjektes angesprochen werden.
Das Objekt Userform erst durch das Laden interpretiert und da sind die im Entwurfsmodus eingefügten Controls schon ein fester Bestandteil des Objektes. Diese kannst du auch nicht per Remove zur Laufzeit löschen.
Gruß
Nepumuk
Anzeige
Danke - owT
01.10.2010 10:32:27
JogyB

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige