Anzeige
Archiv - Navigation
1848to1852
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

VBA ValidateList - Laufzeitfehler 1004

VBA ValidateList - Laufzeitfehler 1004
05.10.2021 10:03:19
BuddyHoli
Hallo,
ich versuche an zwei Stellen in meinem Programm eine Gültigkeitsprüfung mit DropDown-Liste in Zellen zu schreiben.
Dazu habe ich zwei Arrays angelegt, nämlich ValSeasons und ValTeams, beide vom Typ String.
Möchte ich nun beispielsweise eine DropDown-Liste für ValSeasons in die Zelle C18 schreiben, mache ich das so:

With ThisWorkbook.Worksheets("Analysen").Range("C26").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(ValSeasons, ",")
End With
Das klappt auch problemlos.
Mache ich das Ganze aber für ValTeams, und zwar so:

With ThisWorkbook.Worksheets("Analysen").Range("C28").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(ValTeams, ",")
End With
Erhalte ich für die Zeile

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(ValTeams, ",")
die Fehlermeldung: "Laufzeitfehler '1004': Anwendungs- oder objektorientierter Fehler"
Den Array ValTeams befülle ich einfach mit Werten aus einer Spalte:

For Row = 2 To LastRow
ValTeams(TeamCounter) = Worksheets("Arrays").Range("I" & Row).Value
TeamCounter = TeamCounter + 1
Next Row
Und ich kann mir nach dem Befüllen auch mit

MsgBox Join(ValTeams, vbCrLf)
den gesamten Inhalt des Arrays anzeigen lassen.
Der Fehler erscheint dennoch.
Ich hoffe, jemand sieht, was ich nicht sehe
Gruß
BuddyHoli

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA ValidateList - Laufzeitfehler 1004
05.10.2021 10:21:16
ChrisL
Hi
Das Blatt ist geschützt.
Ansonsten bitte eine Beispieldatei ins Forum laden.
cu
Chris
AW: VBA ValidateList - Laufzeitfehler 1004
05.10.2021 10:42:01
BuddyHoli
Nein, weder Arbeitsblätter noch Arbeitsmappe sind mit einem Blattschutz versehen.
Die Datei ist für den Upload leider zu groß. Du kannst Sie aber gern von meinem Webspace laden
https://buddyholi.de/BuliTippStats-Beispiel.xlsm
Als Zip wäre sie dann hier:
https://buddyholi.de/BuliTippStats-Beispiel.zip
Excel erkennt schon beim Öffnen, dass mit der Datenüberprüfung etwas nicht stimmt. Der Debugger bringt dich auch direkt zur entsprechenden Zeile.
Den Code findest Du im Sheet "Diese Arbeitsmappe"
Er dient dazu, beim Öffnen der Arbeitsmappe die Arrays zu beladen und anschließend die Validierungslisten in die Zellen C18, C26 und C28, sowie F18, F26 und F28 zu schreiben.
Die Module (Makros zu den Buttons im Arbeitsblatt Analysen) habe ich für diese Beispieldatei entfernt.
Weiterer Code ist im Arbeitsblatt Analysen zu finden.
Dieser macht aber nichts anderes als die o.g. Zellen Überwachen. Die C28 und F28 wird aber noch nicht überwacht, entsprechend sollte das Problem auch hier nicht liegen können.
Anzeige
AW: VBA ValidateList - Laufzeitfehler 1004
05.10.2021 11:02:58
peterk
Hallo
Du hast 17997 Einträge in deiner ValTeams Liste, davon 58 befüllt!
Ausserdem:

Ersetze
LastRow = Worksheets("SpielplanData").Cells(Rows.Count, 1).End(xlUp).Row
Durch
With Worksheets("SpielplanData")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
Da sonst Rows.Count einen Fehler liefert, da noch kein Worksheet aktiv ist und somit undefiniert ist.
Peter
AW: VBA ValidateList - Laufzeitfehler 1004
05.10.2021 11:29:41
BuddyHoli
Der Code zum Ermitteln der letzten Zeile war nicht das Problem. Den nutze ich eigentlich auch immer so, wenngleich ich deine Begründung verstehe.
Aber Du hast mit der anderen Aussage natürlich völlig Recht.
Ziel des Ganzen war nur die Teams zu listen, die im selektierten Bereich bei Start-Saison und End-Saison ausgewählt wurden.
Ich habe nun Code hinzugefügt, um nur die nicht doppelten Teams zwischen dem ersten Start-Saison Eintrag und dem letzten End-Saison Eintrag in den Array zu schreibe, habe sie dann im Array sortiert und nun klappt das Ganze auch :)
Besten Dank
Anzeige
AW: VBA ValidateList - Laufzeitfehler 1004
05.10.2021 12:09:12
BuddyHoli
Eine Frage noch: bekommst Du beim öffnen der Datei auch die beiden Meldungen:
Wir haben ein Problem bei einigen Inhalten erkannt. Sollen wir so viel wie möglich wiederherstellen? Wenn Sie der Quelle der Arbeitsmappe vertrauen, klicken sie auf "ja"
und danach:
Reparaturen
Die Datei konnte von Excel ggeöffnet werden, indem der nicht lesbare Inhalt repariert oder entfernt wurde. Entferntes Feature: Datenüberprüfung von xl/worksheets/sheet2.xlm-Part
Klicken Sie hier, um eine Logatei der Reparaturen anzuzeigen:


-
error359720_01.xml
Fehler in Datei 'BuliTippStats-Beispiel.xlsm'
-
Entferntes Feature: Datenüberprüfung von /xl/worksheets/sheet2.xml-Part



Anzeige
AW: VBA ValidateList - Laufzeitfehler 1004
05.10.2021 12:40:12
peterk
Hallo
Ja, bekomme ich auch.
Das Problem: Excel kann zwar mit sehr langen Listen arbeiten aber kann diese beim Einlesen (starten) nicht laden (daher die Fehlermeldung). Ich glaube die maximale Länge darf 256 Zeichen nicht überschreiten.
Workaround:
a.) Da Du die Liste bei jedem Start neu generierst, kannst Du Sie beim speichern auch wieder löschen. (Problem: Wenn jemand zwischenspeichert ist die Überprüfung leider weg)
b.) Du schreibst Deine Liste in ein seperates Worksheet (versteckt?) und übergibst den Range (z.B. "=Geheim!A1:A58") damit hast Du kein Problem mit der Länge.
Peter
Anzeige
AW: VBA ValidateList - Laufzeitfehler 1004
05.10.2021 13:32:13
BuddyHoli
Ich habe es jetzt noch anders gelöst.
Ich habe alle Codezeilen, die irgendwas mit dem Neu-Einlesen der Listen im Tabellenblatt Arrays zu tun hatten, in die Worksheet-Change Prozedur gepackt und lasse sie nur noch laufen, wenn die entsprechend zugehörigen Zellen geändert werden. Das dauert live max. 1,5 Sek.
Exakt den gleich Code führe ich einmalig beim Öffnen der Arbeitsmappe aus. Ebenfalls kaum spürbar.
Und siehe da: Meldungen sind weg, Reparatur wird nicht mehr ausgeführt. Läuft :)
AW: VBA ValidateList - Laufzeitfehler 1004
05.10.2021 14:48:50
BuddyHoli
Ich habe es jetzt noch anders gelöst.
Ich habe alle Codezeilen, die irgendwas mit dem Neu-Einlesen der Listen im Tabellenblatt Arrays zu tun hatten, in die Worksheet-Change Prozedur gepackt und lasse sie nur noch laufen, wenn die entsprechend zugehörigen Zellen geändert werden. Das dauert live max. 1,5 Sek.
Exakt den gleich Code führe ich einmalig beim Öffnen der Arbeitsmappe aus. Ebenfalls kaum spürbar.
Und siehe da: Meldungen sind weg, Reparatur wird nicht mehr ausgeführt. Läuft :)
Anzeige
AW: VBA ValidateList - Laufzeitfehler 1004
05.10.2021 11:57:22
Yal
Hallo Buddy,
Wenn Du eine Liste als Gültigkeit übergeben möchtest, kann niemals den Operator "xlBetween" sein.
Richte nochmal eine Liste-Gültigkeitsprüfung unter laufenden Makro-Rekorder und schau Dir den aufgezeichneten Code an. So hast Du die Antwort zu deiner Frage.
VG
Yal
Sorry. mein Fehler. owT
05.10.2021 12:10:31
Yal

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige