Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1384to1388
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

Automatisierte Namens Abfrage eines ListObjects

Automatisierte Namens Abfrage eines ListObjects
14.10.2014 16:15:27
Sebastian
Hallo zusammen!
Meine Forensuche war leider recht erfolglos, darum hoffe ich nun hier auf kompetente Hilfe.
Zu meinem Problem: Ich habe ein Makro geschrieben welches innerhalb der Arbeitsmappe ein _ Arbeitsblatt kopiert und dieses anschließend bearbeiten soll. Die Tabelle, wie sie auf dem Ausgangs-Arbeitsblatt bereits formatiert ist soll um 3 Spalten erweitert werden. Hierzu bietet sich nach meiner Recherche folgender Code an:

Worksheets("Test").ListObjects("Tabelle123").Resize Range("$B$3:$M$231")

Allerdings scheitert es aktuell an dem Name des ListObjects (Tabelle123). Bei jeder Aktualisierung des Arbeitsblattes (löschen des vorhandenen und erneut kopieren) wird der Name geändert.
Zur Frage: Gibt es eine möglichkeit automatisiert den Namen entweder:
-abzufragen (es gibt lediglich ein LostObject)
-beim Kopieren festzulegen oder
-das Problem eleganter zu lösen?
Beste Grüße und vorab shconmal vielen Dank!
Sebastian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisierte Namens Abfrage eines ListObjects
14.10.2014 18:46:46
Luschi
Hallo Sebastian
mach es so:

Sub testListObjekt()
Dim lstObj As ListObject
On Error Resume Next
Set lstObj = Worksheets("Test").ListObjects(1)
On Error GoTo 0
If lstObj Is Nothing Then
MsgBox "kein ListObjekt gefunden!", 16
Exit Sub
End If
MsgBox "juchhu - Name des ListObjekts: " & lstObj.Name, 48
'usw.
End Sub
Gruß von Luschi
aus klein-Paris

AW: Automatisierte Namens Abfrage eines ListObjects
15.10.2014 09:57:27
Sebastian
Servus Luschi,
es funktioniert, vielen Dank!
Jedoch hätte ich noch eine kleine Frage:
Was wird in dem folgenden Block gemacht?
On Error Resume Next
Set lstObj = Worksheets("Test").ListObjects(1)
On Error GoTo 0
Hier wird salop formuliert doch nichts anderes genacht als eine Schleife mit aufsteigender ID des ListObjects bis das erste "fehlerfreie" - sprich existende gefunden wird, oder?
Ach und welche Funktion haben die Zahlen 16 und 48 am Ende der MsgBox?
Beste Grüße,
Sebastian

Anzeige
AW: Automatisierte Namens Abfrage eines ListObjects
15.10.2014 15:40:12
Luschi
Hallo Sebastian,
mit dem Befehl 'Set lstObj = Worksheets("Test").ListObjects(1)' wird das erste existierende/erzeugte ListObject einer Objekt-Variablen zugewiesen. Das klappt aber nur, wenn es auch wirklich mindestens 1 Listobjekt gibt. Gibt es keins, dann würde dieser Befehl einen Vba-Fehler erzeugen.
Um das zu verhindert, verwendet man den darüberliegenden Befehl 'On Error Resume Next'. Dann verweist die Variable aber nicht auf das vorhandene Listobjekt, sondern besitzt den undefinierten Zustand 'Nothing', was man übersetzen könnte mit 'Leider nicht vorhanden'.
Gibt es mehr als 1 Listobjekt, dann werden diese durch Vba intern durchnummeriert durch einen Index entsprechend der Entstehungsreihenfolge beginnend bei 1. Andere Auflistungen können auch bei 0 anfangen.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Automatisierte Namens Abfrage eines ListObjects
15.10.2014 16:36:45
Sebastian
Hallo Luschi,
danke für diese ausführliche und aufklärende Antwort! Damit kann ich arbeiten.
Besten Gruß,
Sebsatian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige