[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Markierte Einträge aus einem ungebundenen Listenfeld holen

Sprache / Programm: Access ab Version 97
Beschreibung

Holt die markierten Einträge aus einem einspaltigen Listenfeld. Auf Wunsch werden diese auch gelöscht.

VBA-Quelltext
Public Function ListenFeldHolen(ListenFeld As ListBox, Optional Löschen)
    Dim Nr As Byte, PosA As Integer, PosE As Integer, ListenInhalt As String
   
    If IsMissing(Löschen) Then
        Löschen = False
    Else
        If TypeName(Löschen) <> "Boolean" Then
            ListenFeldHolen = CVErr(0)
            Exit Function
        End If
    End If
   
    ' Nur einspaltige Listenfelder zulassen
    If ListenFeld.ColumnCount <> 1 Then
        ListenFeldHolen = CVErr(0)
        Exit Function
    ElseIf ListenFeld.ListCount = 0 Then
        Exit Function
    End If
   
    ListenInhalt = ";" & Nz(ListenFeld.RowSource)
    PosA = 1
   
    For Nr = 0 To ListenFeld.ListCount - 1
        PosE = PosA + Len(ListenFeld.Column(0, Nr)) + 3
        If ListenFeld.Selected(Nr) = True Then
            ListenFeldHolen = ListenFeldHolen & ";""" & ListenFeld.Column(0, Nr) & """"
            If Löschen = True Then
              ListenInhalt = Left(ListenInhalt, PosA - 1) & Mid(ListenInhalt, PosE)
            Else
                PosA = PosE
            End If
        Else: PosA = PosE
        End If
    Next Nr
    If Left(ListenFeldHolen, 1) = ";" Then ListenFeldHolen = Mid(ListenFeldHolen, 2)
    If Löschen = True Then
        If Left(ListenInhalt, 1) = ";" Then ListenInhalt = Mid(ListenInhalt, 2)
        If Right(ListenInhalt, 1) = ";" Then ListenInhalt = Left(ListenInhalt, Len(ListenInhalt) - 1)
        ListenFeld.RowSource = ListenInhalt
    End If
End Function
Argumente der Funktion/Prozedur

Listenfeld.

ListBox-Objekt
als Objekt.

Löschen.

Boolscher Wert, der angibt, ob die augewählte(n) Zeile(n) aus der ListBox entfernt werden sollen.

Rückgabewert

String, der die markierten Einträge enthält. Die einzelnen Einträge sind durch ; getrennt, so daß der Rückgabewert sofort an die RowSource-Eigenschaft eines Listenfeldes zurückgegeben werden kann.

Anwendungsgebiete, Fehler und Warnungen

Nur für einspaltige, ungebundene Listenfelder. Fürf die Mehrfachauswahl und für die Ereigniseigenschaft OnClick muß die Multi-Select-Eigenschaft korrekt eingestellt sein.