Anzeige
Archiv - Navigation
1908to1912
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

Listbox Mehrfachauswahl - VBA

Listbox Mehrfachauswahl - VBA
07.12.2022 13:38:15
Erwin
Hallo Zusammen,
mit Hilfe des Forums habe ich eine Tabelle mit einer Mehrfachausfahl (Listbox) erstellt, die problemlos funktioniert.
In der Spalte "R" kann ich diese Auswahl durchführen.
Nachdem ich diese nun an Mitarbeitende verteilen soll, ist mir aufgefallen, dass wenn ich eine ganze Zeile markiere die Meldung "Laufzeitfehler '94: Unzulässige Verwendung von Null" erscheint. Die Kolleginnen und Kollegen können aber mit dieser Fehlermeldung nichts anfangen.
Das Komische daran ist, wenn ich innerhalb der Tabelle eine ganze Zeile markiere, bleibt der Debugger ganz wo anders stehen, als wenn ich außerhalb der Tabelle eine ganze Zeile markiere.
Kann man "beide" Probleme irgendwie lösen/unterbinden?
Datei: https://www.herber.de/bbs/user/156567.xlsm
Vielen Dank schon mal - Erwin

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox Mehrfachauswahl - VBA
07.12.2022 14:07:09
ralf_b
das liegt daran das du Target.text einer Variablen zuweisen willst. Target.text ist aber Null bei deiner Zeilenselection

 If Target.CountLarge > 1 Then Exit Sub 
vor dem ganzen Theater würde nur eine einzelne Zelle als Auswahl durchlassen
AW: Listbox Mehrfachauswahl - VBA
07.12.2022 14:18:11
Erwin
Hallo Ralf,
danke für die Info; ich denke der Code soll vor der Fehlerzeile erscheinen.
Hab ich mal gebastelt und des funktioniert
Danke - Erwin
AW: Listbox Mehrfachauswahl - VBA
07.12.2022 15:00:16
ralf_b
du kannst es schon vor die Intersect-zeile setzen. das spart etwas Zeit.
AW: Listbox Mehrfachauswahl - VBA
07.12.2022 15:01:55
Erwin
Super, passt, danke Dir.
AW: Listbox Mehrfachauswahl - VBA
07.12.2022 16:01:29
Daniel
"Das Komische daran ist, wenn ich innerhalb der Tabelle eine ganze Zeile markiere, bleibt der Debugger ganz wo anders stehen, als wenn ich außerhalb der Tabelle eine ganze Zeile markiere."
das liegt an folgendem:
wenn du mehrere Zellen markierst (Target ist also keine Einzelzelle, sondern ein Zellbereich), dann hat das einige Effekte:
- Target.Value ergibt keinen Einzelwert, sondern ein Array
- bei anderen Eigenschaften wie Target.Text ist es so, dass hier kein Array erzeugt wird, sondern:
wenn alle Zellen von Target den selben Eigenschaftswert haben, dann ist das Ergebnis dieser Eigenschaftswert
wenn unterschiedliche Eigenschaftswerte vorhanden sind so wird NULL ausgegeben (nicht die Zahl 0, sondern quasi NIX)
wenn du also eine ganze Zeile mit Inhalten markierst, dann knallt es schon hier:
strText = Target.Text
denn es gibt Zellen mit unterschiedlichem Inhalt und dann ist das Ergebnis NULL. Und dieses NULL darfst du einer Stringvariable nicht zuweisen, daher bekommst du in diesem Fall hier schon den Fehlerabbruch.
markierst du eine ganze Leerzeile, haben alle Zellen den selben Wert, in diesem den Text "" (Leerstring) und dieser wird dann von Target.Text ausgebeben.
mit "" kann strText arbeiten, daher läuft der Code erstmal weiter.
das nächste Problem ist dann
.Left = Target.Offset(0, -1)
denn wenn du eine ganze Spalte markierst, hast du auch die Spalte A dabei und die kannst du nicht weiter nach links verschieben, daher dann hier der Abbruch.
eine Lösung für dein Problem hast du ja schon bekommen.
eine andere wäre, dass du hier statt mit Target mit Target(1) oder mit ActiveCell arbeitest, denn das ist dann immer nur eine Zelle, auch wenn du mehrere markiert hast.
btw, würdest du strText = Target.Value verwenden, würdest hier immer den Fehlerabbruch bekommen sobald du mehr als eine Zelle markierst, denn dann ist Target.Value ein Array, und dieses Array kann einer normalen Stringvariable nicht zugewiesen werden.
Gruß Daniel
Anzeige
AW: Listbox Mehrfachauswahl - VBA
07.12.2022 16:31:59
Erwin
Hallo Daniel,
wieder super ausführlich erklärt, vielen Dank.
Aus deinen vielen Beiträgen konnte ich bisher immer nur staunen und lernen.
Ich habe noch ein weiteres Makroproblem, aber da geht es rein um die Geschwindigkeit beim Aufbereiten von Tabellen mit ca. 100.000 Zeilen. Das Makro läuft bei ein paar 1.000 Zeilen problemlos und korrekt.
Machst du auch ausserhalb dieses Forums noch etwas?
Wenn ja, kannst du dich, wenn du Lust hast, unter erwin.geer@gmx.de melden.
Wenn nicht, auch gut
Grüße -Erwin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige