Försöker ränsa en listview med en loop men den skall inte ta bort de som är i bockade i check boxen. Vänd på loopen och ta bort högsta först för att sedan traska ner till noll. He, he. Klassiskt fel. Om du tar bort poster kommer du ju att minska antalet listitems. Enklast är att Loopa baklänges.<br> Hur vänder man på en For Loop? Ingen funka, som du trodde på första: Hallo Ja Listview är nytt för mig. Hur lägger du in ditt data i listviewn ?? Hämtar du data från ngn databas? Nu fungerar det att ta bort flera gånger.. :-) Jepp det gör jag: Jepp nu funkar den, kannon! <code> Suveränt!!!!Försöker ränsa i en Listview med en For Loop!?
'''Ta bort alla som inte är ibockade!
Dim l As Long
For l = 1 To ListView1.ListItems.Count
If ListView1.ListItems(l).Checked = False Then
ListView1.ListItems.Remove (l)
End If
Next l'
Har gjort så här men det blir fel.
'Index Out Of Bunds? '35600'
Tacksam för hjälp!Sv: Försöker ränsa i en Listview med en For Loop!?
/johan/Sv: Försöker ränsa i en Listview med en For Loop!?
<br>
Eller använda en For Each. Snyggare och effektivare:
<code>
Dim Item As ListItem
For Each Item In ListView1.ListItems
If Item.Checked = False Then
ListView1.ListItems.Remove Item
End If
Next
</code>
Lite osäker på om man kan skicka ListItem eller om man enbart kan skicka Index/key. Om det inte funkar testa då:
<code>
Dim Item As ListItem
For Each Item In ListView1.ListItems
If Item.Checked = False Then
ListView1.ListItems.Remove Item.Index
End If
Next
</code>Sv: Försöker ränsa i en Listview med en For Loop!?
Dim l As Long
For l = ListView1.ListItems.Count To 1
If ListView1.ListItems(ListView1.ListItems.Count).Checked = False
Then
ListView1.ListItems.Remove (ListView1.ListItems.Count)
End If
Next l
Löste skälva problemet men nu vill jag få en loop som räknar ner.Sv: Försöker ränsa i en Listview med en For Loop!?
Första: Invalid key
På andra får jag felet.
Andra: Control's collection has been modified
Tacksam för hjälp!!!Sv: Försöker ränsa i en Listview med en For Loop!?
Använd KEY när du lägger in dina fält.
<code>
Private Sub Command1_Click()
Dim l As Integer
Dim antal As Integer
antal = ListView1.ListItems.Count
For l = 1 To antal
If ListView1.ListItems("nr" & l).Checked = False Then
ListView1.ListItems.Remove ("nr" & l)
End If
Next l '
End Sub
Private Sub Form_Load()
Dim LI As ListItem
Dim i As Integer
For i = 1 To 15
Set LI = ListView1.ListItems.Add(i, "nr" & i, "ett")
LI.SubItems(1) = "två"
Next i
End Sub
</code>
Detta funderar
NETTANSv: Försöker ränsa i en Listview med en For Loop!?
Den funkar nästan som jag vill!
Den fryser programmet när den tar bort runt 500 poster & tar väldigt lång tid på sig!?
Så här ser kåden ut som jag nu har efter ert förslag:
Dim i As Integer
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems("nr" & i).Checked = False Then
ListView1.ListItems.Remove ("nr" & i)
End If
Next i
Då spar den de som är Checkade, kannon men om jag checkar ur en av dom och kör loopen igen så blir det fel: [Element Not Found!]
?Checka 123,789 sen checka ur 3,7 fel?
Tacksam för hjälp!Sv: Försöker ränsa i en Listview med en For Loop!?
//NettanSv: Försöker ränsa i en Listview med en For Loop!?
<code>
Private Sub Command1_Click()
Dim l As Integer
Dim antal As Integer
l = 1
Do
If ListView1.ListItems(l).Checked = False Then
ListView1.ListItems.Remove (l)
Else
l = l + 1
End If
antal = ListView1.ListItems.Count
Loop Until l > antal
End Sub
</code>
Här behöver du inte någon key när du lägger in posterna heller
///NettanSv: Försöker ränsa i en Listview med en For Loop!?
och det är ca 500 poster i listview just nu och det tar ca 30sek att ränsa listview!? lite segt på en P2?
Hur jag lägger in:?????
Set itmx = ListView1.ListItems.Add(, "nr" & iKey, Rs!idnr, 1, i)
itmx.SubItems(1) = Rs!fornamn & " " & Rs!efternamnSv: Försöker ränsa i en Listview med en For Loop!?
Tack!
Men den går segt som sakt.Sv: Försöker ränsa i en Listview med en For Loop!?
Dim l As Long
For l = ListView1.ListItems.Count To 1 Step -1
If ListView1.ListItems(l).Checked = False Then
ListView1.ListItems.Remove (l)
End If
Next
</code>Sv: Försöker ränsa i en Listview med en For Loop!?
WOSH...... så var listview'n tom!!! :-)
Tack!