Clever-Excel-Forum

Normale Version: Listbox aus 2 1 und Inhaltprüfen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Zusammen, 

habe in meinem funktionierenden Formular auf Userform-Basis unter anderem comboboxen durch listboxen ersetzen müssen, z.B. wegen der Mehrfachauswahl. 
Nun habe ich festgestellt, viele Dinge klappen nicht so wie ich dachte oder gar wie vorher. 

z.B. würde ich gerne aus der Auswahl von zwei listboxen eine neue befüllen. 

Ausgangspunkt: Die Übernahme von einem Listbox... 

Private Sub cmd_Auswählen2_Click()
 
   For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox3.AddItem ListBox1.List(i)
    Next i
    
End Sub


Bekomme die Kombi aus Listbox1 und Listbox2 einfach nicht hin. 

Zum anderem würde ich gerne den Inhalt auf Vollständigkeit prüfen.

Bisher habe ich folges (für Comboboxen) genutzt:
Private Sub InhalteCheck()

    Dim MsgStr As String
    Dim IstSel As Boolean
    Dim Lauf As Long
    Dim i As Integer
   
    MsgStr = ""        'Für die Ausgabe der Hinweise
    IstSel = False      'Ist schon ein Eingabefeld selectiert?
    Lauf = 0            'Anzahl der "Fehler"


' Unter Allgemeine Angaben

If ListBox2.Listindex = -1 Then                                          'Abfrage der einzelnen Felder
        Lauf = Lauf + 1                                                'Zählen der "Fehler"
        MsgStr = MsgStr & CStr(Lauf) & ". Bitte Daten besonderer Kategorien auswählen" & vbCrLf ' MgsStr aufbauen
        If Not IstSel Then
            IstSel = True
            ListBox2.SetFocus
        End If
    End If
  
If IstSel Then
        MsgBox "Es wurden noch " & CStr(Lauf) & " fehlerhafte Eingaben gefunden." & vbCrLf & "Bitte korrigieren:" & vbCrLf & vbCrLf & MsgStr, vbCritical, "ACHTUNG - Fehlende Eingaben"
    Else
      uebertragen
       
    End If
End Sub   
 

Doch weder Listbox1.listindex noch .listcount funktioniert. 

Jetzt war die Überlegung durch zählen der ausgewählten Elemente dies zu kombinieren. 
Also, 

Private Sub listbox1Zaehlen()
    Dim iSelCnt As Integer
    Dim ix As Integer
   
    iSelCnt = 0
    For ix = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(ix) = True Then iSelCnt = iSelCnt + 1
    Next ix
    MsgBox "Anzahl selektierte =" & iSelCnt
End Sub


irgendwie da einbauen, und 

if listbox1.iSelCnt = 0 Then .... Fehlerzählen

aber das übersteigt dann doch meine Fähigkeiten.  

Falls Ihr Ideen und Lösungen habt, gerne mit Erklärung, damit ich es auch nachvollziehen kann und was dazu lerne. 


Vielen Dank im Voraus.
Hallo,

wer soll denn anhand deiner Quelltexte dein Projekt nachbauen? Lade bitte die Datei hoch.
Hallo, 
Die Drei Listboxen befinden sich im Userform1 

Vielen Dank vorab.
Guten Morgen, 

für Hinweise und Anregungen wäre ich dankbar. 
Werde ja nicht der Einzige sein, der aus der Auswahl aus zwei Listboxen eine neue Listbox erstellen will, oder???

:)
anbei eine mögliche Lösung:

Code:
Private Sub cmd_Auswählen2_Click()
    Dim arrSammeln(50), arrListErg As Variant, i As Long, j As Long, k As Long
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            arrSammeln(j) = ListBox1.List(i, 0)
            j = j + 1
        End If
    Next i
     For i = 0 To ListBox2.ListCount - 1
        If ListBox2.Selected(i) = True Then
            arrSammeln(j) = ListBox2.List(i, 0)
            j = j + 1
        End If
    Next i
    i = 0
    k = 0
    ReDim arrListErg(0 To j - 1)
        For i = 0 To UBound(arrSammeln)
            If arrSammeln(i) = "" Then
                GoTo weiter
            Else
                arrListErg(k) = arrSammeln(i)
                k = k + 1
            End If
weiter:
        Next i
    With ListBox3
        .Clear
        .List = arrListErg
    End With
End Sub
Es ist eigentlich nicht kompliziert. Einfach jede markierte Stelle listboxweise auslesen und in ein kleines Array übergeben. Dann ein zweites Array anlegen, in welches nur Einträge übergeben werden. Das Ganze dann in die Listbox3 .List eintragen. Man kann das rausfiltern der Leeren auch direkt an der Listbox mit .AddItem erledigen, dann braucht es das 2. Array nicht.

Gruß Uwe
Hallo Uwe, 

vielen Dank, es funktioniert. Hast du noch eine Idee, wie man überprüft, ob ein oder mehrere elemente- als Vorraussetzung sozusagen- ausgewählt wurden, um dies in mein oben beschrieben Inhaltecheck einzufügen? Gibt es vielleicht ein ähnliche Eigenschaft wie bei den Comoboxen (listindex?) 

So, oder so, vielen Dank.

VG
meinst du das Ausgabeergebnis der Listbox3?

Gruß Uwe
Hallo,
 
schreibe doch bitte mal nachvollziehbar, anhand deiner hochgeladenen Datei, an welcher Stelle was mit welchen Parametern überwacht werden soll und wohin/wie die Ausgabe erfolgen soll.
Machbar ist das sicherlich recht problemlos.
 
Gruß Uwe
Morgen Uwe, 

ich möchte z.B. prüfen, ob in der Listbox1 und Listbox2 etwas ausgewählt wurde. 
Das habe ich im Sub "Inhaltecheck" im Userform 1 vorbereitet. 
Mit Comboboxen kann ich dies ja über den listindex abbilden: 
If Combobox1.listindex = -1 Then ...

Gibt es eine ähnliche Eigenschaft bei Listboxen? 

Mit dem InhalteCheck soll sichergestellt werden, dass alle Pflichtfelder ausgefüllt sind, bevor es weitergeht, ausgelöst über den Klick auf "Weiter". 


PS: Wo müsste ich denn in deinem Code die zwei Textfelder (Freitextfelder) integrieren, damit diese mit in die Listbox3 aufgenommen werden? 
Ich habe es an vers. Stellen probiert, jedoch das Problem dass es meist hinter jedem ausgewählten Eintrag mit anhängt wird?!
Hallo,

Drücke den Button Info.

Gruß Uwe
Seiten: 1 2