• 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.

Tabelrijen verwijderen met ComboBox

Status
Niet open voor verdere reacties.

wieter

Terugkerende gebruiker
Lid geworden
26 jun 2009
Berichten
1.128
Via een ComboBox wil ik de rijen met een bepaald jaartal verwijderen.
Code:
Sub UserForm_initialize()
    ComboBox1.List = [row(2018:2025)]
End Sub
Sub CommandButton1_click()
With Sheets(1).ListObjects(1).DataBodyRange
    .AutoFilter 8, ComboBox1.Value
    .EntireRow.Delete
    .AutoFilter
End With
Unload Me
ThisWorkbook.RefreshAll
End Sub
Dit lukt zolang er maar rijen zijn, waarin het gekozen jaartal voorkomt.
Kiest men een jaartal, dat niet voorkomt in de tabel, verdwijnt alles.
Dus, de code is fout, maar Wat is fout?
 

Bijlagen

Laatst bewerkt:
Bedankt voor je reactie.
Maar ook met die toevoeging(vbNullString) blijft het probleem bestaan.
Als het gekozen jaartal , niet voorkomt in de tabel, verdwijnt alles.
Liefst zou ik een MsgBox zien verschijnen, met de melding: "Jaartal niet gevonden".
 
Gewoon geen data verwijderen uit tabellen.:d

Code:
With Sheets(1).ListObjects(1)[COLOR="#FF0000"].Range[/COLOR]
    .AutoFilter 8, ComboBox1.Value
    [COLOR="#FF0000"].Offset(1)[/COLOR].EntireRow.Delete
    .AutoFilter
End With
 
Laatst bewerkt:
Weerom bedankt VenA.
DataBodyRange was dus de oorzaak.
En dan Offset(1) om de kolomkoppen te behouden.
Weer wat bijgeleerd.
 
Yep, Filteren en sorteren doe je het beste obv kolomkoppen.;)

Je kan er ook voor kiezen om alleen de beschikbare jaren in de tabel te gebruiken. Dan krijg je zoiets
Code:
Sub UserForm_initialize()
  ar = Sheets(1).ListObjects(1).DataBodyRange
  For j = 1 To UBound(ar)
    If InStr(c00, ar(j, 8)) = 0 Then c00 = c00 & "|" & ar(j, 8)
  Next j
  ComboBox1.List = Split(Mid(c00, 2), "|")
End Sub
 
Laatst bewerkt:
Weer knap gevonden, om alleen de gebruikte jaartallen in de lijst op te nemen.
Als je tijd en zin hebt, graag enige uitleg.
In c00 worden alle gegevens verzameld, gescheiden door een "pipe".
Code:
If InStr(c00, ar(j, 8)) = 0 Then c00 = c00 & "|" & ar(j, 8)
Welke instructie zorgt ervoor dat een jaartal maar eenmaal in de lijst opgenomen wordt?

Welgemeende dank!
 
Code:
If InStr(c00, ar(j, 8)) = 0

Als het jaar ar(j,8) niet in de string c00 voorkomt = 0 dan toevoegen.
 
En nog maar eens een extra bedankje er bovenop.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan