Microsoft Excel

Herbers Excel/VBA-Archiv

Eintrag multiselect Listbox beim Markieren prüfen


Betrifft: Eintrag multiselect Listbox beim Markieren prüfen
von: Peter
Geschrieben am: 17.12.2018 07:31:33

Guten Morgen ihr Excelspezialisten,

ich befülle eine Listbox (multiselect) mit 29 Spalten.

Nun würde ich gerne eine Prüfung bei Listbox1_Click, wenn eine Zeile ausgewählt wird, dass das Selectieren aufgehoben wird, wenn in Spalte 19 (S) leer ist und wenn in Spalte 26 (Z) = "x".

Ist dies technisch möglich? Könnt ihr mir hier bitte helfen.

Besten Dank

Gruss
Peter

  

Betrifft: AW: Eintrag multiselect Listbox beim Markieren prüfen
von: Peter
Geschrieben am: 17.12.2018 10:52:30

Nachtrag:

Hallo ihr Excelspezialisten,

ich habe jetzt ein Makro entwickelt, mit welchem ich einen in der Listbox1 Multiselect markiere und den Wert der ersten Spalte der Listbox in der Tabelle3 suche. Es wird dann der Wert in der 18. Spalte daneben = S geprüft. Falls nicht leer dann exit sub - wenn leer, dann soll für den Eintrag in der Listbox die Markierung aufgehoben werden.

Und genau hier liegt jetzt das Problem.

Private Sub CommandButton11_Click()
    Dim I As Integer    'für Auswahl Listbox1 - selectierte Zeile
    
    Dim Beschreibung As String      'für gefundenen Wert
    Dim Fundort As Range            'für Fundort in Spalte A
    Dim Ziel As Range            'für Ziel = Fundort = in Spalte A + 18 Spalten = Spalte S für  _
E-Mails-Adressen

    
    For I = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(I) = True Then
            MsgBox ListBox1.List(I)             'ListBox1.List(I) ist der Suchbegriff - Wert in  _
Spalte suchen und Wert aus Spalte S prüfen
        
    Beschreibung = ListBox1.List(I)
    Set Fundort = Worksheets("Tabelle3").Range("A:A").Find(Beschreibung)
    
    MsgBox Fundort.Offset(, 18)     'liest den Wert aus aus gefundener Zelle und 18 dazu =  _
Spalte S für E-Mails
        End If
        

    Next
    
    Set Ziel = Fundort.Offset(, 18)

    If Ziel = "" Then
    MsgBox "Zeilenmarkierung aufheben"       !!! hier ist mein Problem !!!
    Else
    Exit Sub
    End If
End Sub

Könnt ihr mir bitte hierbei helfen.

Noch einen Zusatz: ich probiere dies jetzt in einem Commandbutton aus - aber eigentlich sollte das Prüfereignis beim Markieren erfolgen. Wie ich aber gelesen habe, funktioniert Listbox1_Click bei einer Multiselect-Listbox nicht. Wie kann diese Prüfung automatisch erfolgen?

Besten Dank für eure Hilfe.

Gruss
Peter


  

Betrifft: AW: Eintrag multiselect Listbox beim Markieren prüfen
von: fcs
Geschrieben am: 17.12.2018 11:02:08

Hallo Peter,

das Listbox-Click-Ereignis funktioniert hier nicht. Man muss mit dem Change-Ereignis arbeiten.
Allerdings muss man einen Merker setzen, damit das Makro nicht in eine Endlosschleife gerät.

Gruß
Franz

'Code unter dem Tabellenblatt-Code-Modul oder unter dem Userform-Code-Modul
'Deklaration Variable im Modul
Private bolExit As Boolean

'Ereignismakro bei Änderung des Wertes der Listbox
Private Sub ListBox1_Change()
    Dim iItem As Integer
    If bolExit = True Then Exit Sub
    bolExit = True
    Application.EnableEvents = False
    With Me.ListBox1
        For iItem = 0 To .ListCount - 1
            If IsEmpty(.List(iItem, 18)) And LCase(.List(iItem, 25)) = "x" Then
                .Selected(iItem) = False
            End If
        Next
    End With
    Application.EnableEvents = True
    bolExit = False
End Sub




  

Betrifft: AW: Super
von: Peter
Geschrieben am: 17.12.2018 11:13:41

Hallo Franz,

vielen, vielen Dank für Deine Hilfe. Es funktioniert einwandfrei.

Wünsche noch einen schönen Tag.

Gruss
Peter