Listbox: Mit 1-fmMultiSelectMulti arbeiten?

Hallo,
eine Listbox, deren MultiSelect-Eigenschaft auf 1fmMultiSelectMulti eingestellt ist, enthält etliche Additems, die unter dem Click-Ereignis oder Change-Ereignis der Listbox nacheinander ordentlich abgearbeitet werden.

Ich möchte aber die angeklickten Einträge der Box entweder mit dem Exit-Ereignis der Box oder mit dem Click-Ereignis eines Command-Buttons abarbeiten. Beides funktioniert nicht: Es wird nur der jeweils zuletzt angeklickte Eintrag abgearbeitet und die vorher markierten Einträge werden nicht beachtet.

Wie muß die Prüfroutine aussehen, damit a l l e angeklickten Einträge der Listbox bei Eintritt des Exit-Ereignisses der Listbox bzw. dem Click-Ereignis der Commandbox nacheinander abgearbeitet werden oder ist das gar nicht programmierbar ?

Gruß
Wilhelm

Wie muß die Prüfroutine aussehen, damit a l l e angeklickten
Einträge der Listbox bei Eintritt des Exit-Ereignisses der
Listbox bzw. dem Click-Ereignis der Commandbox nacheinander
abgearbeitet werden oder ist das gar nicht programmierbar ?

Du mußt den Inhalt der Listbox in einer Schleife durchlaufen und die Eigenschaft „Selected“ überprüfen. Ist „Selected“ auf True, dann ist das ein ausgewählter Listboxsatz.

Code:

For Count = 0 to List1.ListCount - 1
If List1.Selected(Count) = True Then
'*** Verarbeitung ***
End If
Next Count

Grüße
Siegfried

Hallo Siegfried,
ich weiss nicht, ob ich die Schleife richtig verstehe: Tut sie nicht jedesmal dasselbe, wenn mehrere Additems der Listbox aktiviert sind? Ich brauche etwas wie

If lst1.Selected(0) = True Then
Selection.TypeText "11111 "
End If
If lst1.Selected(1) = True Then
Selection.TypeText "22222 "
End If
If lst1.Selected(2) = True Then
Selection.TypeText "33333 "
End If

  1. Kann man das mit der Schleife hinbekommen?
  2. Kann man in der Schleife oder im obigen Codeschnipsel die Indexnummer irgendwie durch den Text des jeweiligen Additems ersetzten?

Gruß Wilhelm

If lst1.Selected(0) = True Then
Selection.TypeText "11111 "
End If
If lst1.Selected(1) = True Then
Selection.TypeText "22222 "
End If
If lst1.Selected(2) = True Then
Selection.TypeText "33333 "
End If

  1. Kann man das mit der Schleife hinbekommen?
  2. Kann man in der Schleife oder im obigen Codeschnipsel die
    Indexnummer irgendwie durch den Text des jeweiligen Additems
    ersetzten?

Möglichkeit 1 (Indexnummer):

for Count = 0 to lst1.listcount -1
if lst1.selected(count) = True Then
Selection.TypeText String$(Trim$(Str$(count)), 5)
end if
next count

Möglichkeit 2 (Indexnummer):

statt
Selection.TypeText String$(Trim$(Str$(count)), 5)

setzt du

Selection.TypeText lst1.list(count)

Fertig ist die Laube! :wink:

Grüße
Siegfried

Hallo Siegfried,
ist noch nix mit „Fertig ist die Laube!“ :frowning:((
Was genau passiert in Deiner Selection.typeText-Zeile der Schleife?

:for Count = 0 to lst1.listcount -1
: if lst1.selected(count) = True Then
: Selection.TypeText String$(Trim$(Str$(count)), 5)
: end if
:next count

Ziel ist:
Bei Auswahl „Bürgschaft an Käufer“ in der Listbox soll ablaufen:
lblKontrolle.Caption = „anliegend überreiche ich Ihnen für Ihre Unterlagen eine beglaubigte Ablichtung der vom Ver-käu-fer durch die Hamburgische Land-es-bank - Gi-ro-zen-tra-le ge-stell-ten Bürg-schaft ge-mäß § 7 MaBV.“
Verweis.GoToTMLösch 'Geht zur Textmarke TM und löscht sämtliche Textmarken im aktiven Dokument
Selection.InsertFile „vd-notBürgschaftAnKäufer.doc“
Back 'Löscht ein Zeichen
GotoTM 'Geht zur Textmarke TM aus der eingefügten Datei
Label13.Visible = True
lstBVBrandenburg.Visible = True

Bei Auswahl „Einfache Abschrift“ in der Listbox soll ablaufen:
lblKontrolle.Caption = „von der vorstehenden Urkunde überreiche ich Ihnen 1 einfache Abschrift für Ihre Unterlagen.“
Verweis.GoToTMLösch 'Geht zur Textmarke TM und löscht sämtliche Textmarken im aktiven Dokument
Selection.InsertFile „vd-notbeteiligteeinfacheAbschrift.doc“
Back 'Löscht ein Zeichen
GotoTM 'Geht zur Textmarke TM aus der eingefügten Datei

Wenn beide Einträge aktiviert sind, sollen beide Prozeduren aufgerufen werden. Wie bitte baue ich das in Deine elegante Schleife ein? Ich habe von String-, Trim- und ähnlichen Funktionen zwar schon mal gehört, aber eben nur gehört.
Möchtest Du Dich des Problems noch einmal annehmen?

Danke für die Hilfe und Gruß
Wilhelm

Hi !

Nehmen wir den Krempel mal stückweise auseinander:

String$(Trim$(Str$(count)), 5)

„count“ ist der Zähler eines markierten Eintrag in einer Listbox. Der erste Eintrag einer Listbox ist immer die 0, der höchste Wert eines markierten Eintrags ist die Anzahl der Sätze in der Listbox minus 1 !!!

Um aus einer Zahl wie „count“ einen Text zu machen, wird „Count“ über die Funktion „Str$“ in einen Text umgewandelt.

Leider haben mittel „Str$“ umgewandelte Zahlen den negativen Seiteneffekt, daß sie evtl. mit Leerzeichen behaftet sind. Also tilgt man diese Leerzeichen - führend oder nachfolgend - mit der Funktion „Trim$“.

Aus eine Zahl 3 ist nun ein Text „3“ geworden.

In deinem Beispiel war von einer Kennung die Rede, bestehend aus 5 gleichen Ziffern, z.B. „22222“, „33333“ usw. Die Kennung mit fünf gleichen Ziffern soll sich aus der Nummer des markierten Listboxeintrages ergeben: ist der erste Satz markiert, soll eine „11111“ erscheinen, ist es der zweite Satz, dann eine „22222“ usw.

Wir haben bisher nur die Listboxsatznummer ermittelt und in einen Text umgewandelt. Nun muß dieser Text auf fünf gleiche Ziffern erweitert werden. Das übernimmt die Funktion „String$“, der man als ersten Parameter das Zeichen mitgibt, das geschrieben werden soll, als zweiten Parameter die Anzahl, wie oft das Zeichen erscheinen soll.

String$(„A“, 5) würde als Ergebnis „AAAAA“ liefern. Wir haben aber unsere Satznummer in einen Text umgewandelt. Ist also der Satz Nr. 3 markiert, erhalten wir jetzt einen Text, der „33333“ lauten.

Das war’s.

Grüße
Siegfried

Hallo Siegfried,
wenn ich Dein posting so lese, muß ich konzedieren, daß alles in meinen schlauen Büchern steht, ich es aber bisher nicht verwenden mußte. Dank also für die Nachhilfestunde!:smile:)

Mit meinen Zahlenreihen „11111“ pp habe ich Dich leider auf eine falsche Fährte gelockt; sie sollten stehen für „Tu irgendwas“.

Ich werde jetzt einfach mit If-Then-Abfragen für alle Einträge in der jeweiligen Listbox arbeiten, denn dann funktioniert es ja, seitdem ich von Dir weiß, daß die Abfrage über die Selected-Eigenschaft erfolgen muß.

Danke und Grüße!
Wilhelm

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]