Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1700to1704
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

Listbox wird mit Array gefüllt wie zurück in Tabel

Listbox wird mit Array gefüllt wie zurück in Tabel
03.07.2019 11:01:23
Peter
Hallo ihr Excelspezialisten,
die ListBox1 wird mittels Array gefüllt, wobei mit eine If Anweisung ein Datumfilter erfolgt.
Wie bekomme ich nun diese gefilterten Daten in eine andere Tabelle?
'Auswahl anzeigen Datum
<pre>Private Sub CommandButton17_Click()
Dim i As Long, maxlen As Long, Li As Long, ii As Long, LC As Long
Dim str As String, str2 As String, arr As Variant
Dim Startdatum As Date, EndDatum As Date
Dim wsName As String
Dim Kat As String
wsName = Me.ComboBox3.Value
Worksheets(wsName).Activate
'geändert auf CDate(UserForm4.tbx_Startdatum)
'in einer Textbox steht Text der wird mit
'CDate in ein Datum gewandelt
Startdatum = CDate(Me.TextBox2)
EndDatum = CDate(Me.TextBox3)
Kat = Me.TextBox1
maxlen = 35
With ListBox1
.Clear
.ColumnCount = 10
.ColumnWidths = "3cm;6cm;3cm;3cm;3cm;3cm;0cm;0cm;0cm;0cm" 'Spalte 6 Bestand wird ausgeblendet
'hier geändert von i=9 auf i=10 (ohne die Kopfzeilen)
'Spaltenbeschriftung über Label
For i = 11 To Cells(Rows.Count, "B").End(xlUp).Row '11=ohne Saldozeile
Li = i - 9
str = Cells(i, 3)
If CDate(Cells(i, 2)) >= Startdatum And CDate(Cells(i, 2)) <= EndDatum _
Then
.AddItem
LC = .ListCount - 1
.List(LC, 0) = Cells(i, 2) 'SpalteB in Spalte1
.List(LC, 1) = Cells(i, 3) 'Original-Text speichern SpalteC
.List(LC, 2) = Cells(i, 4) 'SpalteD in dritte Spalte3
.List(LC, 3) = Cells(i, 5) 'SpalteD in dritte Spalte3
.List(LC, 4) = Format(Cells(i, 6), "#,##0.00 €") 'SpalteE in dritte Spalte4
.List(LC, 5) = Format(Cells(i, 7), "#,##0.00 €") 'SpalteF in dritte Spalte5
.List(LC, 6) = Format(Cells(i, 8), "#,##0.00 €") 'SpalteH in dritte Spalte5
.List(LC, 8) = Li 'Zeilen-Nr speichern
.List(LC, 9) = Cells(i, 3) 'Original-Text speichern
str = Cells(i, 3)
If i > 9 Then
If str = "" Then str = " "
arr = Split(str, " ")
str2 = arr(0)
For ii = 1 To UBound(arr)
If Len(str2 & arr(ii)) + 1 <= maxlen Then
str2 = str2 + " " + arr(ii)
Else
.AddItem
LC = .ListCount - 1
'.List(LC, 0) = Cells(i, 2) 'SpalteA in Spalte1
.List(LC, 1) = Cells(i, 3) 'Original-Text speichern
'.List(LC, 2) = Cells(i, 4) 'SpalteD in dritte Spalte3
'.List(LC, 3) = Format(Cells(i, 5), "#,###.00 €") 'SpalteE in dritte Spalte4
'.List(LC, 4) = Format(Cells(i, 6), "#,###.00 €") 'SpalteF in dritte Spalte5
'.List(LC, 5) = Format(Cells(i, 7), "#,###.00 €") 'SpalteG in dritte Spalte6
.List(LC, 8) = Li 'Zeilen-Nr speichern
.List(LC, 9) = Cells(i, 3) 'Original-Text speichern
str2 = arr(ii)
End If
.List(.ListCount - 1, 1) = str2
Next ii
End If
End If
Next i
End With
'ab hier Summen der gefilterten Zeilen aus Listbox
Dim intSum1 As Currency
Dim intSum2 As Currency
'Summe Spalte3=SpalteE=Einnahmen
With ListBox1
For i = 0 To .ListCount - 1
If .List(i, 4) > "" Then
intSum1 = intSum1 + .List(i, 4)
End If
Next
End With
Label6 = intSum1
Label6 = Format(Label6, "#,##0.00 €")
'Summe Spalte4=SpalteF=Ausgaben
With ListBox1
For i = 0 To .ListCount - 1
If .List(i, 5) > "" Then
intSum2 = intSum2 + .List(i, 5)
End If
Next
End With
Label7 = intSum2
Label7 = Format(Label7, "#,##0.00 €")
'Summe Einnahmen ./. Ausgaben in Label8
Label8 = Label6 - Label7
Label8 = Format(Label8, "#,##0.00 €")
'Anfang Anfangbestand und Endbestand in jeweils ausgewähltem Bereich
With ListBox1
If ListBox1.ListCount > 0 Then
Label18 = (.List(0, 6))
Label18 = Format(Label18, "#,##0.00 €")
Label19 = (.List(0, 4))
Label19 = Format(Label19, "#,##0.00 €")
Label20 = (.List(0, 5))
Label20 = Format(Label20, "#,##0.00 €")
Label21 = CDbl(Label18) - CDbl(Label19) + CDbl(Label20)
Label21 = Format(Label21, "#,##0.00 €")
Label22 = CDbl(Label21) + CDbl(Label6) - CDbl(Label7)
Label22 = Format(Label22, "#,##0.00 €")
End If
End With
'Ende Anfangbestand und Endbestand in jeweils ausgewähltem Bereich
If ListBox1.ListCount > 0 Then
CommandButton3.Enabled = True
End If
End Sub</pre>
ES geht nur um die Werte der ListBox nicht um die Summenwerte aus den Label.
Besten Dank für eure Hilfe.
Gruss
Peter

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox wird mit Array gefüllt wie zurück in Tabel
03.07.2019 16:37:53
Hajo_Zi
Hallo Peter,
kopiere den sichtbaren Bereich.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Listbox wird mit Array gefüllt wie zurück in Tabel
04.07.2019 08:52:16
Peter
Hallo Hajo,
genau dies ist nicht erwünscht.
Der sichtbare Bereich in der Tabelle ist "alles". Die Daten werden nur in der Listbox gefiltert angezeigt.
Das bedeutet, dass die Daten aus der Listbox auxgelesen werden müssen.
Ich habe die Lösung zwischenzeitlich selbst gefunden:
<pre>Private Sub CommandButton27_Click()
Dim i As Long 'benötigt für Übertrag von ListBox1 in Tabelle1
Dim j As Long 'benötigt für Übertrag von ListBox1 in Tabelle1
Dim Zelle As Range 'benötigt für Umwandlung in Zahl in Tabelle1
Dim s As Long 'benötigt für Umwandlung in Zahl in Tabelle1
'Anfang Übertrag von ListBox1 in Tabelle1
With Worksheets("Tabelle1")
.Range("A1:M200").Clear
With UF_AnzeigenDrucken3f.ListBox1
For i = 0 To .ListCount - 1
For j = 0 To .ColumnCount - 1
Worksheets("Tabelle1").Cells(i + 10, j + 2) = .List(i, j) 'Zeile 10 Spalte 2=B
Next
Next
End With
'Ende Übertrag von ListBox1 in Tabelle1
Call Spaltenbreite_einstellen
Call Zeilenhöhe_einstellen
'Anfang Umwandlung von Zahl in Währung
For Each Zelle In Worksheets("Tabelle1").Range("F10:F16")
s = Zelle.Value
If Zelle.Offset(0, -1) > "" And s > "0" And IsNumeric(s) Then
s = s * 1 'hier wird von Text in Zahl umgewandelt
Zelle.Value = s
Zelle.NumberFormat = "#,##0.00 €" 'hiermit wird auf Währung umgestellt
ElseIf Zelle.Offset(0, -1) = "" Then
Zelle = ""
ElseIf Zelle.Offset(0, -1) > "" And s = "0" Then
Zelle = ""
End If
Next Zelle
For Each Zelle In Worksheets("Tabelle1").Range("G10:G16")
s = Zelle.Value
If Zelle.Offset(0, -2) > "" And s > "0" And IsNumeric(s) Then
s = s * 1 'hier wird von Text in Zahl umgewandelt
Zelle.Value = s
Zelle.NumberFormat = "#,##0.00 €" 'hiermit wird auf Währung umgestellt
ElseIf Zelle.Offset(0, -2) = "" Then
Zelle = ""
ElseIf Zelle.Offset(0, -2) > "" And s = "0" Then
Zelle = ""
End If
Next Zelle
'i.O.
For Each Zelle In Worksheets("Tabelle1").Range("H10:H16")
s = Zelle.Value
If Zelle.Offset(0, -3) > "" And s > "0" And IsNumeric(s) Then
s = s * 1 'hier wird von Text in Zahl umgewandelt
Zelle.Value = s
Zelle.NumberFormat = "#,##0.00 €" 'hiermit wird auf Währung umgestellt
ElseIf Zelle.Offset(0, -3) = "" Then
Zelle = ""
ElseIf Zelle.Offset(0, -3) > "" And s = "0" Then
Zelle = ""
End If
Next Zelle
'Ende Umwandlung von Zahl in Währung
End With
End Sub</pre>
Für diejenigen, die eine derartige Lösung benötigen.
Gruss
Peter
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