Listbox füllen nach Kritieren
#1
Hallo zusammen, ich habe eine Listbox die von Spalte A gefüllt wird . Inden Zellen   steht zum Beipsiel   AT12345  oder AR12345 .

1. möchte aber nur die AR****** angezeigt bekommen.
2. Wie kann man den Zwischenraum  der Anzeige verringern  

  Angezeigt wird  " AT12345                                        Meier) , ich möchte gern "A12345    Meier".

Danke schon mal für eure Hilfe.
Werner


Ich verwende folgenden Code aus einem Forum, der auch funktioniert:

Private Sub UserForm_Initialize()
Dim iZeile As Long
Dim AnzArr As Long

ListBox1.ColumnCount = 2

With Worksheets("Datenkal")
    ' Länge Array bestimmen
    For iZeile = 2 To .Range("A65536").End(xlUp).Row
        If .Cells(iZeile, 1) > 0 Then AnzArr = AnzArr + 1
    Next iZeile
    
    ' Array dimensionieren
    ReDim Arr(AnzArr, 1)
    
    ' Variable zurücksetzen (Recycling) Smile
    AnzArr = 0
    
    ' Array abfüllen
    For iZeile = 2 To .Range("A65536").End(xlUp).Row
        If .Cells(iZeile, 1) > 0 Then
            Arr(AnzArr, 0) = .Cells(iZeile, 1)
            Arr(AnzArr, 1) = .Cells(iZeile, 2)
            AnzArr = AnzArr + 1
        End If
    Next iZeile
    
    ' Array an Listbox übergeben
    ListBox1.List = Arr
    
End With
End Sub
Top
#2
Hallöchen,

versuche mal, den Ablauf in Deinem Makro zu analysieren und zu verstehen.

Im Code wird irgendwo die Listbox gefüllt

ListBox1.List = Arr

Da kommt also arr hinein.

arr muss aber auch irgedwo befüllt werden.

da sehe ich das

Arr(AnzArr, 0) = .Cells(iZeile, 1)
Arr(AnzArr, 1) = .Cells(iZeile, 2)

Wenn ich mir dann das Drumherum anschaue, fällt mir diese Zeile auf:

If .Cells(iZeile, 1) > 0 Then

If heißt Wenn und Then heißt dann, hier wird also irgendwas geprüft und nur wenn die Bedingung erfüllt ist, dann passiert auch was - nämlich in dem Fall das im Code folgende Befüllen des Array.

Was da geprüft wird schaut so aus, wie eine Zelle - ob der Inhalt größer 0 ist.

Das Arr - das ist ein Array - wird dann mit dem Inhalt der Zelle gefüllt

Arr(AnzArr, 0) = .Cells(iZeile, 1)

und die nächste Zeile

Arr(AnzArr, 1) = .Cells(iZeile, 2)

sagt mir, dass auch noch das dazu kommt, was in der Zelle daneben steht - die Zahlen 1 und 2 sind die Spalten A und B

So, da wäre noch die Frage, wo "AR" steht. Ich vermute mal, dass es in Spalte A steht, denn rechts daneben kommt der "Meier".

Du musst nun also in Deine Prüfung der Zelle in Spalte A noch oder nur das AR hineinbringen. AR sind die linken beiden Buchstaben, also könnte die Prüfung so aussehen:

If Left(.Cells(iZeile, 1),2) = "AR" Then
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo André, ich danke dir vielmals für deine Antwort.

1. Es funktioniert  , habe es bei mir eingebaut und es klappt.


2. Leider kann man im Forum keine Bewertung vornehmen, du hättest 100 Punkte bekommen.
    Warum : nicht das du nur die Änderung mitgeteilt hast , sondern weil du den gesamten Ablauf erklärt hast.
    
    Das finde ich super.    :28: :28: :28:

3. Hast du noch eine Idee wie man den Abstand  zischen Spalten ändern kann ?
    (siehe Anhang)


Danke , Grüße  Werner


Angehängte Dateien Thumbnail(s)
   
Top
#4
Hallo Werner,

Zitat:Leider kann man im Forum keine Bewertung vornehmen, du hättest 100 Punkte bekommen
Es gibt zumindest noch den "Danke" - Button Smile

Zitat:Hast du noch eine Idee wie man den Abstand  zischen Spalten ändern kann
Wenn Du Dir die Eigenschaften der Listbox anschaust, gibt es ColumnWiths. Dort gibt man die "Punktebreite" ein, z.B. in dem Format:
40 Pt;80 Pt
wobei es bei Deinen 2 Spalten reicht, nur den Wert für die erste Spalte einzugeben. Die zweite bekommt dann, was übrig bleibt.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste