• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Zoeken in listbox werkt, maar aanpassen niet.

Status
Niet open voor verdere reacties.

rvisser1988

Gebruiker
Lid geworden
24 aug 2011
Berichten
31
Besten,

De fantastische zoekcode voor een listbox d.m.v. een tekstbox werkt, namelijk deze (per ingevoerd teken in de tekstbox schoont de listbox op):
Code:
Private Sub zoeken_Change()

 With shownaam
  .List = Sheets("Registratiebestand").ListObjects(1).DataBodyRange.Columns(1).Resize(, 7).Value
    For i = .ListCount - 1 To 0 Step -1
     If InStr(LCase(Join(Application.Index(.List(), i + 1, 0))), LCase(zoeken.Value)) = 0 Then .RemoveItem i
   Next i
 End With
 
End Sub

Nu is het echter zo dat ik na het zoeken bijvoorbeeld een rij wil verwijderen en daarvoor codeerde ik, om de rij van de listbox te vergelijken met de sheet:
Code:
Private Sub verwijder_Click()

Range("Tabel3").Cells(Me.shownaam.ListIndex + 1, 1).EntireRow.Delete
pasdatinvoer.Value = ""

shownaam.List = Sheets("Registratiebestand").ListObjects(1).DataBodyRange.Columns(1).Resize(, 7).Value

End Sub

Nu kan het zijn, dat door het zoeken de bovenste rij in de listbox de 30e rij van de sheet is. Hierdoor gaat het verwijderen (en aanpassen) helemaal fout (hij pakt de bovenste rij van de sheet).
Is er een manier om dit op te lossen of moet ik op mijn manier de zoekfunctie er uit halen?

Dank jullie wel!!!!
 
Laatst bewerkt:
Zonder Vb bestandje??
Iemand die lid is van 2011 zou ondertussen moeten weten dat je met een vb bestandje sneller (en beter) wordt geholpen.
Maar goed, bij deze, iets in deze richting waarschijnlijk.
In uw userform een textboxje (heb ik hier maar T_registratienummer als naam gegeven)
Dan met de fantastische zoekcode zal je ergens wel iets vinden.
Dan volgende code
Code:
Private Sub shownaam_Click()
T_registratienummer = shownaam.Column(0)[COLOR="#008000"] ' (colomn (0) is A)[/COLOR]
End Sub
En dan
Code:
Private Sub verwijder_Click()
Dim ws As Worksheet
Dim rng As Range, fnd As Range
Set ws = Worksheets("Registratiebestand")
Set rng = ws.Range("A2:A" & ws.Cells(Rows.Count, "A").End(xlUp).Row)
Set fnd = rng.Find(What:=T_registratienummer.Value, LookIn:=xlValues, LookAt:=xlWhole)
If shownaam.ListIndex = -1 Then
MsgBox "Kies eerst de registratie in de lijst!", vbCritical, "Registratie?"
shownaam.SetFocus
Exit Sub
End If
 If Not fnd Is Nothing Then smessage = "Registratie verwijderen, ben je zeker" + "?"
    If MsgBox(smessage, vbQuestion + vbYesNo, "Bevestig wissen") = vbYes Then ws.Rows(fnd.Row).Delete
MsgBox "De registratie is verwijderd!", vbInformation, "Klaar"
End Sub
 
Laatst bewerkt:
Zet de rijnummer in de databodyrange zodat die in je listbox komt.
Daarna is het gemakkelijk om de rij te verwijderen.
 
Sorry, uiteraard wilde ik deze toevoegen, maar was vergeten op invoegen te klikken :)

Hierbij alsnog: Bekijk bijlage 301187

Ik ga straks even kijken naar je code... In ieder geval vast bedankt :thumb:
 
Laatst bewerkt:
Een beetje rare opzet met die twee tabellen onder elkaar dus maar weggehaald.
 

Bijlagen

  • userform2.xlsb
    91,3 KB · Weergaven: 77
Wil je in de war komen........, moet je je form en listbox dezelfde namen geven (shownaam).
 
Inderdaad,

Tabelweergave van VenA geïmplementeerd en userform en listbox verschillende namen gegeven.
Sorry, maar wist tot voor 3 weken geleden eigenlijk niet eens wat VBA was, dus verwonderd mij niets dat jullie op en aanmerkingen hebben :d

Nieuwe file: Bekijk bijlage 301215

Vanmiddag klooien met de zoekfunctie :)
 
Besten,

Behoorlijk lopen klooien met de code van gast0660
In een testbestandje lukte dit wel redelijk, maar ik heb niet de wetenschap om dit op alles (bewerken, aanpassen, toevoegen, etc. toe te passen.)

Heeft iemand enig idee hoe er op een redelijk simpele manier door de listbox onthouden kan worden, welke rij - de rij in de listbox is - van de sheet, ná het zoeken? (of is dit te simpel gedacht :d)

Het bestand ziet er nu zo uit: Bekijk bijlage 301245

Vast bedankt voor jullie tijd uiteraard :)
 
Oplossing gevonden:

Zet in een kolom (mijn geval 50) het rijnummer en laat deze bij nieuwe toevoeging doorvoeren dmv volgende code:
Code:
Sub DoorvoerenFormule()

Dim lngRow As Long
Dim sh As Worksheet
Set sh = Sheets("Registratiebestand")
    
With sh
    lngRow = .Range("A65536").End(xlUp).Row
    .Range("Z3:AX65536").ClearContents
    .Range("Z3:AD;AF3;AX3" & lngRow).FillDown
End With

End Sub

Gebruik bij het listbox click() de volgende code:
Code:
Dim i As Integer
Dim r As Integer


i = Me.shownaam.ListIndex
Me.shownaam.Selected(i) = True
r = Me.shownaam.Column(49)

Me.pasdatinvoer.Value = Sheets("Registratiebestand").ListObjects(1).DataBodyRange.Cells(r - 2, 2)

als je dan bijv. deze gaat aanpassen, gebruik je hetvolgende:
Code:
Dim i As Integer
Dim r As Integer


i = Me.shownaam.ListIndex
Me.shownaam.Selected(i) = True
r = Me.shownaam.Column(49)

Sheets("Registratiebestand").ListObjects(1).DataBodyRange.Cells(r - 2, 2).Resize(, 6) = Array(pasdatinvoer, pasachternaam, pasvoorletter, pasvoornaam, pasgeslacht, pasbsn)

Me.pasdatinvoer.Value = ""

Antwoord op mijn eigen vraag, maar wellicht handig voor gebruikers in de toekomst.

Uiteraard wel bedankt voor jullie medewerking!!!!
 
Die methode had ik je al door laten schemeren in #3.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan