Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Per AddItem - Methode Einträge nach Muster
#1
Hallo Leute,

ich habe in einer ListBox1 folgenden Eintrag:

ListBox1.AddItem "Mitte"

Jetzt möchte ich Einträge in Abhängigkeit einer Bedingung hinzufügen. Ist Bedingung A erfüllt, sollen die Einträge oberhalb dieser Mitte erfolgen,
ist Bedinung B erfüllt, erfolgen die Einträge unterhalb der Mitte.

Am Ende sollen die hinzugefügten Einträge ein solches Muster haben:

ListBox1.AddItem "Eintrag Oben3"
ListBox1.AddItem "Eintrag Oben2"
ListBox1.AddItem "Eintrag Oben1"
ListBox1.AddItem "Mitte"
ListBox1.AddItem "Eintrag Unten1"
ListBox1.AddItem "Eintrag Unten2"
ListBox1.AddItem "Eintrag Unten3"

Wie bekommt man so etwa hin?
Antworten Top
#2
Moin!
Da Du ohnehin per .AddItem füllst, nutze Select Case
Select Case Bedingung
  Case "A"
    ListBox1.AddItem "Eintrag Oben3"
    ListBox1.AddItem "Eintrag Oben2"
    ListBox1.AddItem "Eintrag Oben1"
  Case "B"
    ListBox1.AddItem "Eintrag Unten1"
    ListBox1.AddItem "Eintrag Unten2"
    ListBox1.AddItem "Eintrag Unten3"
End Select

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Gladiator
Antworten Top
#3
Ich glaube, es ist eher so etwas gemeint
This method enables you to insert an item at a specific position within the ListBox. : https://msdn.microsoft.com/en-us/library...nsert.aspx
Fragt sich nur, wie man das für diesen Fall hinkriegt, wir sprechen hier ja nicht über .NET

Sehe gerade, geht ja ganz einfach
https://msdn.microsoft.com/de-de/library...35328.aspx
Das kommt davon, wenn man optionale Parameter so gut wie nie gebraucht Blush
Antworten Top
#4
Ich warte mal ab, dass sich der TE meldet.
Vielleicht (eher wahrscheinlich) sollte man ohnehin anders an die Sache herangehen.
Dazu ist aber ein besser vorbereitetes Beispiel notwendig.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Hallo,

ihr seid ja selbst am Sonntag fleißig wie die Bienen!

Meine ListBox1 Einträge habe ich jetzt fertig. Laßt mich die Aufgabenstellung (zunächst) bitte mal etwas abwandeln.

Habe folgendes Muster in den Einträgen:

Nummer     Name    W
oder
Nummer     Name    R
oder
Nummer     Name    irgendwas

Was ich bräuchte wäre folgendes, ich möchte auf Knopfdruck, also per CommandButton diese ListBox1 Einträge sortieren
und zwar so, dass in der ListBox1 dann erst alle mit dem W Eintrag  erscheinen, dann mit dem R Eintrag und zuletzt mit dem "irgendwas".

Wie geht das?
Antworten Top
#6
(18.06.2017, 08:58)Gladiator schrieb: ...Meine ListBox1 Einträge habe ich jetzt fertig...
Dann hast Du ja sicher eine Beispieldatei, die Du zeigen kannst.
Zum Sortieren: Bubblesort und abwandeln auf Deinen Fall, das dürfte hier völlig ausreichen.

Und was kommt als nächstes?
[-] Folgende(r) 1 Nutzer sagt Danke an Storax für diesen Beitrag:
  • Gladiator
Antworten Top
#7
Hallo Gladiator,

hier mal ein Beispiel:

Tabelle1

AB
1111W
2112R
3113W
4114R
5115W

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Zugehöriger Code (hier beispielhaft einem CommandButton hinterlegt):
Private Sub CommandButton1_Click()
 Dim varQ As Variant
 Dim i As Long, j As Long
 
 varQ = Tabelle1.Range("A1").CurrentRegion.Value
 
 With ListBox1
   .Clear
   .AddItem "Mitte"
   For i = LBound(varQ) To UBound(varQ)
     Select Case varQ(i, 2)
       Case "R"
         .AddItem varQ(i, 1)
       Case "W"
         .AddItem varQ(i, 1), j
         j = j + 1
     End Select
   Next i
   'MsgBox .List(j)
   '.RemoveItem j
 End With
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Gladiator
Antworten Top
#8
Habe die Aufgabe zunächst mal selbst gelöst. Aber Danke an euch! Uwe's Code werde ich dann morgen in meinem Projekt weiterverarbeiten.

Guter Ansatz.

Was mich noch interessieren würde:

Wenn ich  eine mit Einträgen gefüllte ListBox habe, wie könnte ich diese Einträge in ein Feld schreiben?
Die Weiterverarbeitung von Daten ist ja häufig einfacher und schneller, wenn die Daten in einem
Array vorliegen.
Antworten Top
#9
Code:
sub M_snb()
   with listbox1
     sheets(1).cells(1).resize(.listcount,ubound(.list,2)+1)=.List
   end with
End Sub


Und zum sortieren schau mal:

http://www.snb-vba.eu/VBA_Arraylist_en.html#L_11
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Gladiator
Antworten Top


Gehe zu:


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