In excel heb ik een userform waarmee je met behulp van een combobox een naam in een bepaald worksheet kunt selecteren om vervolgens die gehele rij (die persoon met gegevens) te verwijderen. De database bestaat uit een kleine 1000 personen.
Wanneer ik een persoon heb geselecteerd kan ik deze met behulp van een knop uit de worksheet verwijderen. Nu ben ik op zoek naar een code die eerst de gehele rij naar een archief worksheet kopieert en dan pas de rij verwijdert. Iedere verwijderde persoon komt dus op een nieuwe rij in het archief te staan dus zal ook de eerstvolgende lege rij moeten worden geselecteerd.
Dit is de code die ik heb voor het verwijderen:
Private Sub Cmdverwijderen_Click()
Application.ScreenUpdating = False
If Trim(CBselect.Value) = "" Then
CBselect.SetFocus
MsgBox "Selecteer een beveiligingsmedewerker welke je wilt verwijderen!", vbExclamation, "Invoer vereist!"
Exit Sub
End If
cName = CBselect
response = MsgBox("Weet je zeker dat je " & cName & " uit de database wilt verwijderen?", vbOKCancel, "Beveiligingsmedewerker verwijderen")
If response = vbCancel Then
Exit Sub
End If
Dim blad As Worksheet
Set blad = Sheets("Database beveiligers")
If CBselect.ListIndex = -1 Then Exit Sub
blad.Rows(CBselect.ListIndex + 2).Delete
CBselect.Clear
UserForm_Initialize
MsgBox "" & cName & " is succesvol uit de database verwijderd.", vbInformation, "Succesvol verwijderd!"
ActiveWorkbook.Worksheets("Database beveiligers").AutoFilter.Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Database beveiligers").AutoFilter.Sort.SortFields. _
Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Database beveiligers").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Save
response = MsgBox("Wil je nog een beveiligingsmedewerker uit de database verwijderen?", vbYesNo, "Beveiligingsmedewerker verwijderen")
If response = vbNo Then
Unload Me
End If
End Sub
De naam van het archief ws = Archief beveiligers
Ik hoop dat jullie me kunnen helpen in deze
Groetjes Bas
Wanneer ik een persoon heb geselecteerd kan ik deze met behulp van een knop uit de worksheet verwijderen. Nu ben ik op zoek naar een code die eerst de gehele rij naar een archief worksheet kopieert en dan pas de rij verwijdert. Iedere verwijderde persoon komt dus op een nieuwe rij in het archief te staan dus zal ook de eerstvolgende lege rij moeten worden geselecteerd.
Dit is de code die ik heb voor het verwijderen:
Private Sub Cmdverwijderen_Click()
Application.ScreenUpdating = False
If Trim(CBselect.Value) = "" Then
CBselect.SetFocus
MsgBox "Selecteer een beveiligingsmedewerker welke je wilt verwijderen!", vbExclamation, "Invoer vereist!"
Exit Sub
End If
cName = CBselect
response = MsgBox("Weet je zeker dat je " & cName & " uit de database wilt verwijderen?", vbOKCancel, "Beveiligingsmedewerker verwijderen")
If response = vbCancel Then
Exit Sub
End If
Dim blad As Worksheet
Set blad = Sheets("Database beveiligers")
If CBselect.ListIndex = -1 Then Exit Sub
blad.Rows(CBselect.ListIndex + 2).Delete
CBselect.Clear
UserForm_Initialize
MsgBox "" & cName & " is succesvol uit de database verwijderd.", vbInformation, "Succesvol verwijderd!"
ActiveWorkbook.Worksheets("Database beveiligers").AutoFilter.Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Database beveiligers").AutoFilter.Sort.SortFields. _
Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Database beveiligers").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Save
response = MsgBox("Wil je nog een beveiligingsmedewerker uit de database verwijderen?", vbYesNo, "Beveiligingsmedewerker verwijderen")
If response = vbNo Then
Unload Me
End If
End Sub
De naam van het archief ws = Archief beveiligers
Ik hoop dat jullie me kunnen helpen in deze

Groetjes Bas