Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.07.2024 18:36:17
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Problem beim löschen von Daten aus einer Listbox

Problem beim löschen von Daten aus einer Listbox
16.10.2013 10:24:59
Daten
Hy Leute!
Ich habe ein großes Problem beim Löschen von Daten aus einer Listbox mit mehr als 10 Spalten.
Folgende Ausgangssituation:
Ich habe eine Tabelle mit den Spalten A:N (wobei N nur als ColumnCount dient damit man weiß was zu löschen ist)
Jetzt habe ich in meiner ersten Listbox wo ich nur lösche einfach nur die wichtigsten Daten genommen und somit nur 9 Spalten - hier klappt das Löschen einfach mit folgendem Code

With ListBox1
For i = .ListCount - 1 To 0 Step -1
If .Selected(i) And cb_site.Value = "KLM" Then
list1 = .List(i, .columncount - 1)
Sheets("KLM").Rows(list1).Delete
.RemoveItem i
ElseIf .Selected(i) And cb_site.Value = "VIH" Then
Sheets("VIH").Rows(.List(i, .columncount - 1)).Delete
.RemoveItem i
ElseIf .Selected(i) And cb_site.Value = "RBG" Then
Sheets("RBG").Rows(.List(i, .columncount - 1)).Delete
.RemoveItem i
End If
Next
End With
Jetzt habe ich eine Anwendung die ein Update ausführt. Für diesen Fall habe ich auch eigentlich eine Lösung die auch bei einem früheren Sheet funktioniert hat das aber weniger als 10 Spalten hat. Im Allgemeinen brauche ich hier alle Spalten da ich wenn man die Listbox anklickt diese auch in diverse Comboboxen und TextBoxen laden lasse.
Jetzt habe ich es geschafft das mir die Listbox befüllt wird mithilfe eines Arrays.

Private Sub cb_datasource_Change()
'This method you need to fill the ListBox - it needs to be actual after every change in the  _
ComboBox_ServerName
Dim i As Long, k As Long, m As Long
Dim arr As Variant
Dim arrOut() As Variant
Dim blnGefunden As Boolean
If cb_datasource.Value = "" Then Exit Sub
With Sheets("KLM")
arr = .Range(.Cells(1, 1), .Cells(.UsedRange.Rows.Count, 15)).Value
End With
ListBox_Update.Clear
ListBox_Update.columncount = UBound(arr, 2)
For i = 1 To UBound(arr)
For k = 1 To UBound(arr, 2)
If InStr(arr(i, k), cb_datasource.Value) > 0 Then
blnGefunden = True
Exit For
End If
Next k
If blnGefunden Then
m = m + 1
ReDim Preserve arrOut(1 To UBound(arr, 2), 1 To m)
For k = 1 To UBound(arr, 2)
arrOut(k, m) = arr(i, k)
Next
blnGefunden = False
End If
Next i
If m  0 Then ListBox_Update.Column = arrOut
End Sub


Nun habe ich einmal für eine meiner Auswahlen den Code für das löschen geschrieben aber hier habe ich das Problem das er mir in list1 nichts reinschreibt. Ich befürchte das hat etwas zu tun damit das es mehr als 10 Spalten sind aber ich komm hier einfach nicht weiter.

With ListBox_Update
For x = .ListCount - 1 To 0 Step -1
If .Selected(x) Then
list1 = .List(x, .columncount - 1)
Sheets("Sheet2").Rows(list1).Delete
itemdelete = x
End If
Next
End With

Er schreibt mir Werte in x und columncount rein aber am Ende ist list1 "Empty" - da es bei allen meinen anderen Delete-Methoden klappt habe ich die Befürchtung das es etwas mit den mehr als 10 Spalten zu tun hat.
Hat jemand von euch vlt eine Idee? Ich freue mich über jede Hilfe - ärgere mich schon seit letzter Woche darüber das es einfach nicht funktionieren will.

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem beim löschen von Daten aus einer Listbox
16.10.2013 11:45:00
Daten
Hallo,
    With ListBox_Update
For x = .ListCount - 1 To 0 Step -1
If .Selected(x) Then
list1 = .List(x, .columncount - 1)
Sheets("Sheet2").Rows(list1).Delete
itemdelete = x
End If
Next
End With

Da sehe ich nirgends ein .RemoveItem
Gruß
Rudi

AW: Problem beim löschen von Daten aus einer Listb
16.10.2013 12:48:21
Daten
Ah tut mir leid das hab ich vergessen zu posten.
Nachdem hier ja noch ein "Hinzufügen" Code steht sind wir draufgekommen das wenn wir das item gleich löschen würden das er dann einfach alles löscht und deshalb wird erst ganz unten beim Code
ListBox_Update.RemoveItem itemdelete
ausgeführt - daher habe ich das auch in eine eigene Variable gespeichert.

Anzeige
AW: Problem beim löschen von Daten aus einer Listb
16.10.2013 12:56:08
Daten
Aber ich muss dazu sagen er bricht mir ja sowieso schon vorher ab bevor ich überhaupt etwas deleten könnte.
Gelb markiert wird Sheets("Sheet2").Rows(list1).Delete
und während dem herausfinden woran es liegen könnte bin ich eben dahinter gekommen das er mir die list1 gar nicht befüllt - diese bleibt EMPTY. Aber x und columncount haben einen Wert und wie gesagt diese Art hat immer funktioniert.

AW: Problem beim löschen von Daten aus einer Listb
16.10.2013 16:11:12
Daten
Hallo,
vermutlich steht in der letzten Spalte deiner LBx nicht die Zeilennummer.
Lad mal die Mappe hoch.
Gruß
Rudi

AW: Problem beim löschen von Daten aus einer Listb
17.10.2013 10:14:43
Daten
Hy!
Also ich weiß das jetzt gar nicht genau ob ich das habe muss ich ehrlich sagen - aber wie gesagt ist ja immer der gleiche Code. Naja vlt kommst du ja drauf. Es geht hier im speziellen um UserForm 3 - die anderen beiden klappen eigentlich.
Die Daten habe ich halt anonymisiert aber es geht ja eh nur um die Handhabung der Userform.
Ich hoffe wirklich du kannst mir hier helfen und ich habe die Befürchtung es wird bestimmt nur eine Kleinigkeit sein - hier ist es immer gut wenn wer Fremdes drauf schaut denn manchmal sieht man den Wald vor lauter Bäumen nicht mehr.
Aja wenn du es ausprobierst - dann nur mit KLM weil für die anderen hab ich das noch gar nicht umgesetzt da es ja mal für eins gehen muss.
Danke schon einmal für deine Hilfe :-)
https://www.herber.de/bbs/user/87682.xlsm

Anzeige
AW: Problem beim löschen von Daten aus einer Listb
17.10.2013 12:20:28
Daten
Hallo,
Spalte N ist immer leer.
Gruß
Rudi

AW: Problem beim löschen von Daten aus einer Listb
18.10.2013 08:47:50
Daten
Klingt das jetzt blöd wenn ich sage ich weiß? - Die ist immer leer auch bei all meinen anderen Beispielen mit löschen.
Auch wenn du in Userform2 etwas löscht in N steht nie was drinnen - das ist glaube ich nur für die Listbox weil wenn du da alle Spalten anzeigen lässt ist in der letzten Spalte eine Zahl drinnen - aber mir wäre noch nie aufgefallen das in N in der Excel Spalte selber was drin steht. Wie gesagt das steht nur in der Listbox drinnen.
Muss ehrlich gestehen ich selber habe ja diese Löschen-Funktion nicht gemacht sondern auch aus Foren heraus geholt und da hat man eben geschrieben diesen Column-Count braucht man für die Listbox aber selbst in der Spalte im Excel Sheet steht nichts drinnen.
Also das kann auch nicht der Fehler sein - sonst würde es an anderen Stellen nicht funktionieren.

Anzeige
AW: Problem beim löschen von Daten aus einer Listb
21.10.2013 12:34:59
Daten
Also ich frage mich ob ich die einzige bin mit diesem Problem - habe jetzt wieder den halben Nachmittag gesucht um auf eine Lösung zu kommen warum in liste1 nicht drinnen steht beim debuggen und ich komme einfach nicht dahinter - besonders weil es immer geklappt hat sonst.
Hat vlt noch einer von euch eine Idee bzw. kann mir erklären was ich falsch mache?
Nochmal zur Erklärung es sind mehr als 10 Spalten und derzeit habe ich das ganze Update nur für KLM ausprobiert für die anderen funktioniert es noch weniger :-)

AW: Problem beim löschen von Daten aus einer Listb
21.10.2013 12:55:44
Daten
Hallo,
habe jetzt wieder den halben Nachmittag gesucht
so alt ist der Nachmittag doch noch nicht.
Wenn du die LB aus A:N füllst, N leer ist und du die letzte Spale der LB ausliest, ist der Wert (Liste1) zwangsläufig ="".
Die Zeile "" existiert nicht, deshalb kannst du sie auch nicht löschen.
das in N in der Excel Spalte selber was drin steht. Wie gesagt das steht nur in der Listbox drinnen.
In Userform2 wird ja auch beim Füllen der LB die Zeilennr. des Eintrags in die letzte Spalte geschrieben.
  With ListBox1
.Clear
.ColumnCount = UBound(vArr, 2)
For i = 1 To UBound(vArr, 1)
If vArr(i, 1) = strT Then '2 for search column B
.AddItem vArr(i, 1)
For j = 2 To .ColumnCount - 2 'first it was -2 but that doesn't work
.List(.ListCount - 1, j - 1) = vArr(i, j)
Next j
.List(.ListCount - 1, .ColumnCount - 1) = i  '
Gruß
Rudi

Anzeige
AW: Problem beim löschen von Daten aus einer Listb
21.10.2013 15:10:23
Daten
Ok zuerst einmal danke das du dir das anschaust find ich toll :-) aber das ist die Listbox in der Delete User-Form-Funktion. Das klappt ja ohne Probleme. Jetzt habe ich das probiert umzumünzen auf die Listbox in der Update User-Form-Funktion (Form 3) aber ich bekomme das nicht hin. Wie müsste ich das hier jetzt einbauen?
Private Sub cb_datasource_Change()
'This method you need to fill the ListBox - it needs to be actual after every change in the  _
ComboBox_ServerName
Dim i As Long, k As Long, m As Long
Dim arr As Variant
Dim arrOut() As Variant
Dim blnGefunden As Boolean
If cb_datasource.Value = "" Then Exit Sub
With Sheets("KLM")
arr = .Range(.Cells(1, 1), .Cells(.UsedRange.Rows.Count, 14)).Value
End With
ListBox_Update.Clear
ListBox_Update.columncount = UBound(arr, 2)
For i = 1 To UBound(arr)
For k = 1 To UBound(arr, 2)
If InStr(arr(i, k), cb_datasource.Value) > 0 Then
blnGefunden = True
Exit For
End If
Next k
If blnGefunden Then
m = m + 1
ReDim Preserve arrOut(1 To UBound(arr, 2), 1 To m)
For k = 1 To UBound(arr, 2)
arrOut(k, m) = arr(i, k)
Next
blnGefunden = False
End If
Next i
If m  0 Then ListBox_Update.Column = arrOut
Ich habe ja hier das Problem das ich alle Spalten einlesen muss weil ich alle Werte der Tabelle brauche. Ich hoffe das geht hier auch aber irgendwie habe ich das nicht geschafft.

Anzeige
AW: Problem beim löschen von Daten aus einer Listb
21.10.2013 16:10:39
Daten
Hallo,
        If blnGefunden Then
m = m + 1
ReDim Preserve arrOut(1 To UBound(arr, 2) + 1, 1 To m)
For k = 1 To UBound(arr, 2)
arrOut(k, m) = arr(i, k)
Next
arrOut(Ubound(arrOut), m) = i
blnGefunden = False
End If
Next i

Gruß
Rudi

AW: Problem beim löschen von Daten aus einer Listb
21.10.2013 17:46:43
Daten
Hey Rudi!
Hast du das selbst getestet in der Beispielmappe die ich bereitgestellt habe? Hat es bei dir funktioniert?
Bei mir funktioniert es nämlich leider nicht - ich bekomme wie gehabt die gleiche Fehlermeldung
Run-time error '9':
Subscript out of range
In der list1 steht nach wie vor nichts drinnen und markieren tut er mir den darunterstehenden Code
Sheets("Sheet2").Rows(list1).Delete
Wobei das hängt meines Erachtens damit zusammen das eben list1 noch immer empty ist.
Ich hoffe du hast dazu noch eine Idee :-)
lg Mia

Anzeige
AW: Problem beim löschen von Daten aus einer Listb
23.10.2013 10:06:14
Daten
Hey Rudi ich glaube du hattest recht damit das in der letzten Spalte etwas drin stehen muss aber ich glaube das betrifft nur Listboxen mit Spalten größer 10 weil in den anderen brauchte ich das nicht. Jetzt funktioniert es anscheinend - wobei ich verschrei mal lieber nichts denn da kann ja natürlich noch immer ein Fehler auftreten :-)
Danke für deine Hilfe und danke das du dir das angeschaut hast :-)
Ich habe jetzt in der letzten Spalten folgenden Code drinnen
=IF(LEN(B2)>0;ROW();"")
- somit habe ich immer die Zeilennummer drinstehen.
Gruß Mia
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige