Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1892to1896
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

Laufzeitfehler 1004

Laufzeitfehler 1004
25.07.2022 07:02:17
Mike
Hallo zusammen,
ich habe eine Excel Datei mit 2 Arbeitsblättern.
Auf dem ersten Arbeitsblatt (Name = Bewertung) wird mittels Command Button eine Userfom aufgerufen, die eine Listbox enthält.
Auf dem zweiten Arbeitsblatt (Name = Mitarbeiter) befindet sich eine intelligente Tabelle (Name = Werte)
Ich versuche nun mit folgendem Code aus der Userform heraus die Zellwerte aus dem zweiten Arbeitsblatt in einer Listbox anzuzeigen.

Private Sub UserForm_Activate()
ListBox1.ColumnCount = 13
Dim rng As Range
Set rng = Tabelle2.Range("Werte[[ma]:[dez]]")
Dim arr As Variant
arr = rng
ListBox1.List = arr
End Sub
Ich bekomme hier beim Aufruf der Userform den Fehler:
Laufzeitfehler 1004
Die Methode Range für das Objekt _Worksheet ist fehlgeschlagen

Debug sprint auf die Zeile:
Set rng = Tabelle2.Range("Werte[[ma]:[dez]]")
Kann mir jemand sagen wo der Fehler liegt?
Vielen Dank im Voraus!
VG Mike

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004
25.07.2022 08:16:23
PawelPopolski
Also ich kenne die Art der Bereichsdefinition, so wie du sie schreibst, nicht.
Bei mir sieht sowas immer so
Range("A2:C3")
oder so
Range(cells(2,1),cells(3,3))
aus.
Die eckigen Klammern habe ich mal als Kurzschreibweise gesehen [A2:C3], aber dann ohne Range. Soweit ich mich erinnere verlängert diese Schreibweise auch die Ausführungszeit.
AW: Laufzeitfehler 1004
25.07.2022 08:27:53
MCO
Hallo Mike!
Bestimmt hat Pawel mit seiner Range-Ausführung recht, aber ich würde aufgrund der Fehlermeldung schon auf das Sheet-Objekt schauen.
Bitte schreib mal statt Tabelle2.Range

sheets("Tabelle2") .Range
oder

Sheets(2).Range
Es sollte dann dem Namen des Sheets entsprechen bzw der Nummer des Sheets.
Gruß, MCO
Anzeige
Oder so :-) owT
25.07.2022 08:32:12
PawelPopolski
AW: Laufzeitfehler 1004
25.07.2022 09:14:25
Yal
Hallo Mike,
die "intelligente" oder "aktive" Tabellen sind in VBA als ListObject benannt. Diese Objekten haben ihre eigene Eigenschaften.
Folgender Einstieg:

Sub test()
Dim L As ListObject
Dim R As Range
Set L = ActiveSheet.ListObjects("Werte")
With L.DataBodyRange
Set R = Range(.Columns(2).Address, .Columns(4).Address)
End With
Debug.Print R.Address 'Ausgabe ins Direktfenster (Strg+g, oder Ansicht, Direktfenster)
End Sub
Wenn Du den Code im Schritt-Modus (F8) laufen lässt und dabei das Lokalfenster (Ansicht, Lokalfenster) offen hast, dann kannst Du die Eigenschaften der Listobject-Variable L und deren Verschachtelung beobachten. So kommst Du am schnellsten an dem Wissen über das Objektmodell von Listobject.
Weitere Information über das Datenmodell von Listobject erhälst Du im Objektkatalog (F2 oder Ansicht, Objektkatalog).
Auch Strg+F1, wenn "Listobject" markiert ist, führt dich auf die Online Hilfe von Microsoft.
VG
Yal
Anzeige
Verlesen?
25.07.2022 09:18:48
PawelPopolski
Listbox() nicht Listobject()
Verlesen? Nein, im gegenteil
25.07.2022 11:40:14
Yal
Der Fehler kommt bei der Interpretation der Adresse "Werte[[ma]:[dez]]".
Diese Fehler kommt unabhängig davon, ob man eine Listbox befüllen oder irgendwas anderes damit machen möchte.
Es geht zuerst darum, mit der "intelligente" oder "aktive" Tabelle in VBA richtig umzugehen. Und es geht eben mit ListObject-Objekt.
Erst dann kann man einen Listbox, Combobox oder anderen damit befüllen.
VG
Yal
ok :-) owT
25.07.2022 12:02:06
PawelPopolski
Lustigerweise...
25.07.2022 11:52:12
Yal
liefert den Makrorekorder tatsächlich
Range("Werte[[Mrz]:[Dez]]").Select
als richtige Bezeichnung.
Die Umstellung (obwohl es vorher bei mir nicht geklappt hatte) in
Debug.Print Range("Werte[[Feb]:[Apr]]").Address
funktioniert auch.
Vielleicht ist in "Werte[[ma]:[dez]]" eine Tippfehler drin:
"Werte[[mar]:[dez]]"
oder gar
"Werte[[mrz]:[dez]]"
?
VG
Yal
Anzeige
AW: Laufzeitfehler 1004
25.07.2022 15:18:13
GerdL
Hallo

Private Sub UserForm_Activate()
With ListBox1
.Clear
.ColumnCount = 13
.List = Sheets("Mitarbeiter").ListObjects("Werte").DataBodyRange.Value
End With
End Sub
Das dürfte genügen.
Gruß Gerd
AW: Laufzeitfehler 1004
26.07.2022 05:39:53
Mike
Hallo zusammen,
Danke für Eure Antworten, die Lösung von GerdL funktioniert perfekt.
VG
Mike

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige