Hallo,
Probeer uit een listbox een geselekteerde rij te verwijderen.
Eerst heb ik het op onderstaande manier geprobeerd:
Krijg bij alle drie de opties de melding Fout -2147467259 (80004005) tijdens uitvoering
Saillant detail is dat de optie RemoveItem (1) wel werkt.
Daarna heb ik de optie m.b.v. arrays geprobeerd:
Het resultaat hier is dat de listbox compleet leeg is.
Verwijder ik de regel Me.LbFaktuurregels.Clear dan heeft de listbox de oude waarde (er is niets verwijderd)
Als ik tijdens uitvoering m.b.v. de inhoud van de variabelen bekijk dan is de array gevuld met de waarden zonder de verwijderde rij.
Iemand enig idee wat ik hier fout doe. Mij gaat het niet zozeer om een andere oplossing, ik ben veel meer geïnteresseerd in hetgeen ik hier fout doe bij beide opties.
P.s. de listbox wordt als volgt gevuld:
Alvast bedankt voor de moeite
Gr. Hub
Probeer uit een listbox een geselekteerde rij te verwijderen.
Eerst heb ik het op onderstaande manier geprobeerd:
Code:
Private Sub LbFaktuurregels_Click()
Dim i As Integer, j As Integer, intCount As Integer, strValueArray() As String
Me.CbAnnuleer.Enabled = False 'disable all other user actions
Me.CbOk.Enabled = False
Me.TbOmschrijving = Me.LbFaktuurregels.Column(0) ' show selected item in various textboxes
Me.TbAantal = Me.LbFaktuurregels.Column(1)
Me.TbPrijs = Me.LbFaktuurregels.Column(2)
intCount = Me.LbFaktuurregels.ListCount
For i = Me.LbFaktuurregels.ListCount - 1 To 0 Step -1
'check all items in a ListBox; reverse order (Step -1) is used because rows are being deleted from ListBox.
With Me.LbFaktuurregels
If Me.LbFaktuurregels.Selected(i) = True Then
.RemoveItem [COLOR="#FF0000"].List(i) of (i) of (Listindex)[/COLOR]
End If
End With
Next
End Sub
Krijg bij alle drie de opties de melding Fout -2147467259 (80004005) tijdens uitvoering
Saillant detail is dat de optie RemoveItem (1) wel werkt.
Daarna heb ik de optie m.b.v. arrays geprobeerd:
Code:
Private Sub LbFaktuurregels_Click()
Dim i As Integer, j As Integer, intCount As Integer, strValueArray() As String
Me.CbAnnuleer.Enabled = False 'disable all other user actions
Me.CbOk.Enabled = False
Me.TbOmschrijving = Me.LbFaktuurregels.Column(0) ' show selected item in various textboxes
Me.TbAantal = Me.LbFaktuurregels.Column(1)
Me.TbPrijs = Me.LbFaktuurregels.Column(2)
intCount = Me.LbFaktuurregels.ListCount
If intCount > 0 Then ' Proceed only if items exist in listbox
If intCount = 1 Then ' nothing to gather just remove the only row
Else
ReDim strValueArray(intCount - 2, 3) ' Re-size array to hold all listbox values, if necessary
j = 0
For i = 0 To intCount - 1 ' Gather all values to remain in listbox
If Not Me.LbFaktuurregels.Selected(i) Then ' set aside value in array to keep for next step
strValueArray(j, 0) = Me.LbFaktuurregels.Column(0, i)
strValueArray(j, 1) = Me.LbFaktuurregels.Column(1, i)
strValueArray(j, 2) = Me.LbFaktuurregels.Column(2, i)
strValueArray(j, 3) = Me.LbFaktuurregels.Column(3, i)
j = j + 1
End If
Next
End If
Me.LbFaktuurregels.RowSource = "" ' clear listbox of all values
Me.LbFaktuurregels.Clear
With Me.LbFaktuurregels ' re-insert values set aside
.ColumnCount = 4
.ColumnHeads = False
.List = strValueArray
End With
Else
' Inform user
MsgBox "Listbox contains no items."
End If
End Sub
Het resultaat hier is dat de listbox compleet leeg is.
Verwijder ik de regel Me.LbFaktuurregels.Clear dan heeft de listbox de oude waarde (er is niets verwijderd)
Als ik tijdens uitvoering m.b.v. de inhoud van de variabelen bekijk dan is de array gevuld met de waarden zonder de verwijderde rij.
Iemand enig idee wat ik hier fout doe. Mij gaat het niet zozeer om een andere oplossing, ik ben veel meer geïnteresseerd in hetgeen ik hier fout doe bij beide opties.
P.s. de listbox wordt als volgt gevuld:
Code:
Public Sub Orderregel()
Dim i As Integer
Dim sTextboxLines() As String
sTextboxLines = Split(UfFaktuur.TbOmschrijving.Text, vbNewLine) 'split multiline textbox into parts
With UfFaktuur.LbFaktuurregels
.AddItem
.List(Icount, 1) = UfFaktuur.TbAantal.Value
.List(Icount, 2) = UfFaktuur.TbPrijs.Value
.List(Icount, 3) = UfFaktuur.TbPrijs.Value * UfFaktuur.TbAantal.Value
End With
For i = LBound(sTextboxLines) To UBound(sTextboxLines)
With UfFaktuur.LbFaktuurregels
.List(Icount, 0) = sTextboxLines(i)
Icount = Icount + 1
End With
Next
End Sub
Alvast bedankt voor de moeite
Gr. Hub