Userform met VBA: multipage, ID-check, sorteren-button, date modified

Status
Niet open voor verdere reacties.

Ed1234

Gebruiker
Lid geworden
28 nov 2014
Berichten
9
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...
print.jpg
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:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan