Ik ben hobby verzamelaar en wil via een userform in Excel mijn items kunnen bekijken en gegevens aanpassen.
Het ontwerp van een userform lukt wel. Met voorbeelden op internet kom ik met de code ook wel een stukje op weg, maar loop dan op onderdelen echt vast.
Heb al wel een interactief userform voor elkaar gekregen die gegevens van/naar 1 worksheet kan schrijven. Als ID al bestaat wordt bestaand record ingeladen om aan te passen. Als ID nog niet bestaat wordt nieuw record aangemaakt. Heb op internet diverse voorbeelden bekeken, mogelijkheden zijn eindeloos, maar kom er ff niet uit hoe ik VBA laat doen wat ik wil...
Is er iemand die me kan helpen met code om:
- gegevens van multi-page userform naar multi-page worksheet te schrijven (tekstvak, checkbox, image-path)
- knop die checkt of ID al bestaat (op basis daarvan bestaand record aanpassen / nieuw record aanmaken). De ID bestaat in dit geval uit een combinatie van 3 cellen (kolommen)
- knop om records van worksheets opnieuw alfabetisch te sorteren, op meerdere kolommen
- automatisch kolom toe te voegen met datum waarop item laatst bewerkt is
Hoor graag wie me wil/kan helpen. Alle beetjes helpen...

Het ontwerp van een userform lukt wel. Met voorbeelden op internet kom ik met de code ook wel een stukje op weg, maar loop dan op onderdelen echt vast.
Heb al wel een interactief userform voor elkaar gekregen die gegevens van/naar 1 worksheet kan schrijven. Als ID al bestaat wordt bestaand record ingeladen om aan te passen. Als ID nog niet bestaat wordt nieuw record aangemaakt. Heb op internet diverse voorbeelden bekeken, mogelijkheden zijn eindeloos, maar kom er ff niet uit hoe ik VBA laat doen wat ik wil...
Is er iemand die me kan helpen met code om:
- gegevens van multi-page userform naar multi-page worksheet te schrijven (tekstvak, checkbox, image-path)
- knop die checkt of ID al bestaat (op basis daarvan bestaand record aanpassen / nieuw record aanmaken). De ID bestaat in dit geval uit een combinatie van 3 cellen (kolommen)
- knop om records van worksheets opnieuw alfabetisch te sorteren, op meerdere kolommen
- automatisch kolom toe te voegen met datum waarop item laatst bewerkt is
Hoor graag wie me wil/kan helpen. Alle beetjes helpen...

Code:
'*** Interactief Formulier ***
'General declarations / variabelen aanmaken
Dim id As Integer 'record nummer
Dim i As Integer 'rij nummer
Dim j As Integer 'kolom nummer
Dim flag As Boolean 'voor checkboxes
Dim emptyRow As Long 'eerstvolgende rij
Dim StartW 'default breedte van UserForm
Dim StartH 'default hoogte van UserForm
Private Sub CheckBox1_Click()
End Sub
Private Sub Frame8_Click()
End Sub
Private Sub MultiPage1_Change()
End Sub
'bij inladen van formulier cursor in veld ID zetten
Private Sub UserForm_Initialize()
TextBox1.SetFocus 'cursor in eerste textbox plaatsen bij start formulier
StartW = Me.Width 'voor zoombar
StartH = Me.Height 'voor zoombar
End Sub
'#####################################################
'**************************************************
'Userform met schuifknop voor inzoomen /uitzoomen
'**************************************************
'Private Sub UserForm_Initialize()
' StartW = Me.Width
' StartH = Me.Height
'End Sub
'Private Sub CommandButtonClose_Click()
' Unload Me
'End Sub
Private Sub NormalButton_Click()
ScrollBar1.Value = 100
End Sub
Private Sub ScrollBar1_Change()
Me.Zoom = ScrollBar1.Value
Me.Width = StartW * (ScrollBar1.Value / 100)
Me.Height = StartH * (ScrollBar1.Value / 100)
LabelZoom.Caption = ScrollBar1.Value & "%"
End Sub
'#####################################################
'GetData: bij invullen ID worden bijbehorende record data opgehaald van werkblad
Private Sub TextBox1_Change()
GetData 'code voor GetData volgt hierna
End Sub
'button EditAdd: bij aanklikken worden gegevens naar werkblad geschreven
Private Sub CommandButtonEditAdd_Click()
EditAdd 'code voor EditAdd volgt hierna
End Sub
'button Clear: bij aanklikken worden alle velden leeg gemaakt
Private Sub CommandButtonClear_Click()
ClearForm 'code voor ClearForm volgt hierna
End Sub
'button Close: bij aanklikken wordt formulier afgesloten
Private Sub CommandButtonClose_Click()
Unload Me
End Sub
'code voor GetData
Sub GetData()
If IsNumeric(UserForm1.TextBox1.Value) Then
flag = False
i = 0
id = UserForm1.TextBox1.Value
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 4 'TextBox 2, 3, 4 (Genus, Species en Cultivar) worden ingevuld als ingevulde ID al bestaat
UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
Next j
End If
i = i + 1
Loop
'If Excel VBA cannot find the ID (flag is still False), it empties TextBox 2, 3, 4 (Genus, Species, Cultivar).
If flag = False Then
For j = 2 To 4
UserForm1.Controls("TextBox" & j).Value = ""
Next j
End If
'If the ID text box does not contain a numeric value, Excel VBA calls the ClearForm sub
Else
ClearForm
End If
End Sub
'code voor ClearForm
Sub ClearForm()
For j = 1 To 4
UserForm1.Controls("TextBox" & j).Value = ""
Next j
End Sub
'code voor EditAdd
' If the ID text box is not-empty, Excel VBA edits the record ON/TO the worksheet
Sub EditAdd()
If UserForm1.TextBox1.Value <> "" Then
flag = False
i = 0
id = UserForm1.TextBox1.Value
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 4 'TextBox 2, 3, 4 (Genus, Species, Cultivar)
Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
i = i + 1
Loop
'If Excel VBA cannot find the ID (flag is still False), it adds the record to the next empty row.
If flag = False Then
For j = 1 To 4
Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
End If
End Sub
Private Sub lblID_Record_Click()
End Sub
Laatst bewerkt: