Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Suche nach Einträgen in 2. Spalte der Listbox

Betrifft: Suche nach Einträgen in 2. Spalte der Listbox von: stefanseevetal
Geschrieben am: 26.06.2008 15:22:33

Hallo liebe Experten,

ich habe in einer UserForm eine Listbox mit zwei Spalten sowie eine Textbox mit der ich die Listbox "durchsuchen" kann. Funktioniert auch alles wunderbar für die erste Spalte der Listbox. Aber wie muss ich den Code ändern, damit das gleiche auch in der 2. Spalte funktioniert?

Danke und Gruß, Stefan

Private Sub TextBox1_Change()
   
   Dim SuchName As String
   Dim i As Integer
   
   SuchName = UCase(tb_Suche.Value)
 
   For i = 0 To lst_Kontakte.ListCount - 1
      If SuchName <= UCase(lst_Kontakte.list(i)) Then Exit For
   Next
   If i < lst_Kontakte.ListCount Then lst_Kontakte.ListIndex = i
   
End Sub


  

Betrifft: AW: Suche nach Einträgen in 2. Spalte der Listbox von: Rudi Maintaire
Geschrieben am: 26.06.2008 15:39:47

Hallo,
so?

If SuchName <= UCase(lst_Kontakte.list(i)) Or SuchName <= UCase(lst_Kontakte.list(i,1)) Then Exit For


Gruß
Rudi


  

Betrifft: AW: Suche nach Einträgen in 2. Spalte der Listbox von: stefanseevetal
Geschrieben am: 26.06.2008 16:02:33

Hallo Rudi,
ja, das sieht gut aus. Mir ist allerdings gerade aufgefallen, dass das nur bei alphabetischer Sortierung funktioniert. Die Listbox ist aber nach Spalte 1 sortiert, deshalb funktioniert es nicht richtig.

Gibt es eine Möglichkeit, eine Listbox auch nach Spalte 2 zu sortieren?

Danke und Gruß,
Stefan


  

Betrifft: AW: Suche nach Einträgen in 2. Spalte der Listbox von: otto
Geschrieben am: 27.06.2008 08:34:03

Hi,

geht z.B. so (Code aus Forum)

Sub SortBox(ListBox1 As Control, intSpalten As Integer, _
            intSpalte As Integer, Optional bytWie As Byte = 3)
' So DIS 28.04.05
' SortBox sortiert nicht gebundene List- und Comboboxen. Gebundene List- und Comboboxen
' (Angabe bei RowSource oder ListFillRange) können NICHT sortiert werden.
' cltBox     : Name der Listbox die sortiert werden soll.
' intSpalten : Wieviele Spalten sollen mit sortiert werden. Sollte der Anzahl der Spalten
'              in der Listbox entsprechen
' intSpalte  : Nach welcher Spalte soll sortiert werden.
' bytWie     : 1 oder Nicht angegeben als Text
'            : 2 als Zahl, dann muß die ganze Spalte Zahlen enthalten.
'            : 3 als Datum, dann muß die ganze Spalte Datumwerte enthalten.
' Aufruf zum Beispiel so: ListBox1 mit 7 Spalten, Sortierung nach Spalte 1 Sortierordnung Text
' SortBox ListBox1, 7, 1  oder SortBox ListBox1, 7, 1, 1
' Oder so    : Listbox17 mit 2 Spalten, Sortierung nach Spalte 2 Sortierordnung Zahlen
' SortBox ListBox17, 2, 2, 2
Dim intLast As Integer, intNext As Integer, intCounter As Integer, intFehler As Integer
Dim strTmp As String, strFehlertext As String
Dim variLast As Variant, variNext As Variant

On Error GoTo Errorhandler

intFehler = 0

With ListBox1
    For intLast = 0 To .ListCount - 1
        For intNext = intLast + 1 To .ListCount - 1
            Select Case bytWie
                Case 1
                    intFehler = 0
                    variLast = CStr(.List(intLast, intSpalte - 1))
                    variNext = CStr(.List(intNext, intSpalte - 1))
                Case 2
                    intFehler = 1
                    variLast = CDbl(.List(intLast, intSpalte - 1))
                    variNext = CDbl(.List(intNext, intSpalte - 1))
                Case 3
                    intFehler = 2
                    variLast = CDate(.List(intLast, intSpalte - 1))
                    variNext = CDate(.List(intNext, intSpalte - 1))
            End Select
            
            intFehler = 0
            If variLast > variNext Then
                For intCounter = 0 To intSpalten - 1
                    strTmp = CStr(.List(intLast, intCounter))
                    .List(intLast, intCounter) = CStr(.List(intNext, intCounter))
                    .List(intNext, intCounter) = strTmp
                Next intCounter
            End If
        Next intNext
    Next intLast
End With
Exit Sub

Errorhandler:
Dim cltBox
Select Case intFehler
    Case 0
        strFehlertext = "In der Listbox Sortierung ist ein Fehler aufgetreten !"
    Case 1
        strFehlertext = "Nicht alle Werte in der zu sortierenden Spalte sind Zahlen !"
    Case 2
        strFehlertext = "Nicht alle Werte in der zu sortierenden Spalte sind Datumswerte !"
    Case Else
        strFehlertext = "Unerwarteter Fehler !"
End Select

MsgBox strFehlertext & " Bitte informieren Sie 'So' ! " & vbCr & vbCr & _
       "Fehler aufgetreten in " & cltBox.Name & " !" & vbCr & _
       "Fehlernummer = " & Err.Number & vbCr & _
       "Fehlerbeschreibung = " & Err.Description & vbCr & _
       "Fehlersource = " & Err.Source, vbCritical, " Meldung vom Makro SortBox !"
 
End Sub



Gruß

otto


 

Beiträge aus den Excel-Beispielen zum Thema "Suche nach Einträgen in 2. Spalte der Listbox"