Anzeige
Archiv - Navigation
1232to1236
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Arraygefüllte Listboxeinträge einzeln verschieben

Arraygefüllte Listboxeinträge einzeln verschieben
KLE
Hi,
Ich habe ein Datei mit einer Userform, die 2 Listboxen enthält.
In der Listbox1 wählt der User per Markierung (Multi-Markierung = True) Einträge aus. SObald dies geschieht, werden alle markierten in der 2'ten Listbox angezeigt.
Code:

Private Sub objLBAuswahl_Change()
a = 0
b = 0
c = 0
With objLBAuswahl
For a = .ListCount - 1 To 0 Step -1
If .Selected(a) = True Then c = c + 1
Next a
End With
ReDim arrLS(c, 6) ' c zum ermitteln, wieviele Einträge es sein werden
' Ermitteln der Markierten Einträge für den Übertrag in Listbox2
With objLBAuswahl2
For a = .ListCount - 1 To 0 Step -1
If .Selected(a) = True Then
ZeileA = .List(a, 0) + 3
arrLS(b, 0) = wksKZ.Cells(ZeileA, 47).Value   ' wksKZ = Arbeitsblatt Warenkennzeichen
arrLS(b, 1) = wksKZ.Cells(ZeileA, 48).Value
arrLS(b, 2) = wksKZ.Cells(ZeileA, 49).Value
arrLS(b, 3) = wksKZ.Cells(ZeileA, 50).Value
arrLS(b, 4) = wksKZ.Cells(ZeileA, 51).Value
arrLS(b, 5) = wksKZ.Cells(ZeileA, 52).Value
b = b + 1
End If
Next a
End With
ReDim Preserve arrLS(b, 6)  ' erhalte in der Listbox2 immer einen "leeren" Eintrag am Ende ;o(
' dachte mit Preserve würde man dies bereinigen ?!? _
' Zweite-Listbox mit den ausgewählten Warenkennzeichen anzeigen
With objLBDaten
.Clear
.ColumnCount = 6
.ColumnWidths = "0;0;80;110;0;0" ' Ansicht nur die Bezeichnung und Gruppe...
If b > 0 Then .List = arrLS   ' Wenn nichts ausgewählt, bleibt die Listbox clear
End With
Ende:
End Sub

Frage:
Wie kann ich einen Eintrag einer Listbox - mittels eines Buttons "rauf", bzw. "runter", innerhalb der Liste verschieben?
Frage2:
Warum habe ich immer ein leere Zeile am Ende der Listbox2 ? Und wie kann ich diese entfernen ?!?
Gruß und Danke für Eure Unterstützung!
Kay

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Frage 2
18.10.2011 16:46:42
Rudi
Hallo,
dein Array fängt bei 0 an. Mit Dim legst du nicht die Anzahl der Elemente fest, sondern den höchsten Index.
Dim x(6) erzeugt also ein Arrray mit 7 Elementen (0, 1, 2, 3, 4, 5, 6).
Du kannst aber auch den niedrigsten Index mit festlegen. Dim x(1 To 6). Oder in den Kopf des Moduls Option Base 1 schreiben. Dann fanggen alle Arrays bei 1 an.
Gruß
Rudi
AW: Frage 2 - Danke für Deine Erklärung...
18.10.2011 17:13:07
KLE
...darf ich da noch einmal nachhaken und Dich noch was dazu fragen ?
Wie leert man nach Gebrauch wieder eine solches Array - und ist des überhaupt notwendig?
Ich benutzte einige Arrays um verschiedenen Listen und Bereich zu übergeben...und Frage mich, ob dies dann nicht den "Speicher" unnötig voll macht, wenn man den Inhalt des Arrays nach der Übergabe nicht mehr benötigt ?
Gruß und Danke
Kay
Anzeige
AW: Frage 2 - Danke für Deine Erklärung...
18.10.2011 18:40:02
Rudi
Hallo,
leeren ist imho nicht nötig.
Du kannst es aber einfach mit Redim Array(0) zurücksetzen oder mit Erase Array leeren, was aber wohl nichts bringt, da es zwar leer ist, aber noch immer der Speicherplatz reserviert ist.
Gruß
Rudi
Frage 1
19.10.2011 09:06:52
Rudi
Hallo,

Private Sub CommandButton1_Click()
'Items rauf
Dim arrTmp, vntTmp, i As Integer
With ListBox1
arrTmp = .List
For i = 0 To .ListCount - 1
If .Selected(i) Then
If i > 0 Then
vntTmp = arrTmp(i - 1, 0)
arrTmp(i - 1, 0) = arrTmp(i, 0)
arrTmp(i, 0) = vntTmp
End If
End If
Next
.List = arrTmp
End With
End Sub


Private Sub CommandButton2_Click()
'Items runter
Dim arrTmp, vntTmp, i As Integer
With ListBox1
arrTmp = .List
For i = 0 To .ListCount - 1
If .Selected(i) Then
If i 

Gruß
Rudi
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige