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

textboxen in Userform invullen

Status
Niet open voor verdere reacties.

Andre175

Gebruiker
Lid geworden
2 feb 2018
Berichten
351
hallo iedereen.....

ik ben bezig om een excel bestand wat al volop wordt gebruikt wat gebruiksvriendelijker te maken.
De bedoeling is om dmv userforms de invoer van data te vereenvoudigen.

Op het tablad Urenregistratie staat een tabel waar de opvanguren van gastouderkinderen worden ingevuld.

De macroknop laat het Userform zien. Hier wordt eerst de datum ingevoerd (dubbel klik), in de combobox kan het gezin worden geselcteerd.
Tot zover gaat het goed. (mits de eerste lege rij in de tabel van te voren is geselecteerd, dit moet nog worden aangepast)

De bedoeling is dat zodra er een gezin is geselecteerd in de combobox dat de textboxen "Kind1" t/m "Kind4" Automatisch worden ingevuld.
het kan dus zijn dat er maar 1 of 2... of 3 kinderen van het desbetreffende gezin is/zijn.

Ik ben al tussen de bedrijven door aan het zoeken geweest hoe de code te schrijven. Aangezien dit mijn eerste uitdaging is met userforms loop ik nu vast.

wie o wie kan/wil me verder helpen.


Bekijk bijlage Urenlijsten en facturatie.xlsm

PS... de tabbladen voor Facturatie heb ik ivm privacy verwijderd.
net zoals alle namen en adressen zijn zelf bedacht
 
Laatst bewerkt:
Lekker bestandje om naar te kijken, niet om mee te werken; de bladen worden steeds verborgen, dus gauw afgesloten om misschien andere vraagstellers nog even van dienst te kunnen zijn.
 
Wat je hebt ziet eruit als een relationele database. De lastigste projecten zijn het verwerken van gegevens uit een relationele database met een programma dat daar helemaal niet voor gemaakt is (Excel). MSAccess is hier veel geschikter voor. Verder klopt er weinig van de struktuur mbt de tabellen. Hiermee kan je niet veelvoorkomende situaties makkelijk aan. Zoals kinderen van gescheiden ouders die om en om bij moeder en bij vader wonen en dus twee adressen hebben.
 
Ik weet dat het met acces ook mogelijk is en waarschijnlijk is dat ook wel beter en makkelijker.
Ik heb zelf totaal geen kennis van Acces, wel eens wat geprobeerd maar niet gelukt.
Aangezien we een jaar terug toch iets moesten klaarmaken om de uren bij te houden is het dit geworden.

wat betreft de structuur van de Tabellen.... Er staat idd het 1 en ander overbodige in. Deze had ik nog niet verwijderd maar hadden we gewoon verborgen kolommen van gemaakt.
2 adressen zal niet voorkomen, mocht het toevallig zo zijn dat een kind van gescheiden ouders door beide ouders geplaatst wordt, dan zal er gewoon een extra gezin bij komen. Dat is geen probleem.

Ik zal het bestand ff gaan "opruimen", en zoek nog ff verder naar een oplossing.


André
 
Deze brengt de kinderen naar de textboxen

Code:
Private Sub CommandButton1_Click()
With Sheets("Tabel Kinderen")
    For i = 2 To .Range("C" & Rows.Count).End(xlUp).Row
        If .Cells(i, 3) = CbGezin.List(CbGezin.ListIndex, 0) Then
            j = j + 1
            Me("TbKind" & j) = .Cells(i, 3).Value
        End If
    Next
End With
End Sub

mvg
Leo
 
bedankt voor je reactie Leotaxi....

echter het werkt (nog) niet.

Als ik geen gezin kies, krjjg ik een foutmelding
Kies ik wel een gezin en run jou code, dan geen foutmelding maar blijft alles gewoon leeg

Voor box CbGezin heb ik de volgende Code

Code:
Private Sub UserForm_Initialize()
    sn = Sheets("tabel kinderen").Cells(1).CurrentRegion
    For j = 2 To UBound(sn)
        If InStr(c01 & ",", "," & sn(j, 5) & ",") = 0 Then c01 = c01 & "," & sn(j, 5)
    Next
    
    CbGezin.List = Split(Mid(c01, 2), ",")
    
End Sub
 
kleine aanpassing en rechtstreeks in combobox

Code:
Private Sub CbGezin_Click()
With Sheets("Tabel Kinderen")
    For i = 2 To .Range("C" & .Rows.Count).End(xlUp).Row
        If .Cells(i, [COLOR="#FF0000"]5[/COLOR]) = CbGezin.List(CbGezin.ListIndex, 0) Then
            j = j + 1
            Me("TbKind" & j) = .Cells(i, 3).Value
        End If
    Next
End With
End Sub

mvg
Leo
 
Helemaal top!!

weer een stapje verder.
Nu maar ff puzzelen dat wanneer de tijden ingevuld zijn, alles weggezet gaat worden in de 1e lege rij van de tabel.
 
mmmm.... nog kleine aanpassing nodig.
wanneer er een ander gezin gekozen wordt moeten de textboxen eerst leeg gemaakt worden.

als ik namelijk een gezin kies met 2 of meer kinderen, en daarna een gezin met 1 kind, blijven de namen van het vorige gezin staan.

Code:
    For Each tb In Me.Controls
    tb.Value = 0

dit iig niet :(
 
Got it...

Code:
Private Sub CbGezin_Change()
    For i = 1 To 4
        Me("TbKind" & i) = vbNullString
    Next i
With Sheets("Tabel Kinderen")
    For i = 2 To .Range("C" & Rows.Count).End(xlUp).Row
        If .Cells(i, 5) = CbGezin.List(CbGezin.ListIndex, 0) Then
            j = j + 1
            Me("TbKind" & j) = .Cells(i, 3).Value
        End If
    Next
End With
End Sub
 
om weg te schrijven

Code:
Private Sub CommandButton1_Click()
With Sheets("Urenregistratie")
    lr = .Range("B" & Rows.Count).End(xlUp).Row + 1
    For i = 1 To 4
        If Me("TbKind" & i) <> "" Then
            Sheets("Urenregistratie").Range("B" & lr) = CDate(TbDatum)
            Sheets("Urenregistratie").Range("F" & lr) = Me("TbKind" & i) & " " & CbGezin.List(CbGezin.ListIndex, 0)
            Sheets("Urenregistratie").Range("H" & lr) = Me("TbVan" & i) & ":00"
            Sheets("Urenregistratie").Range("I" & lr) = Me("TbTot" & i) & ":00"
            lr = lr + 1
        End If
    Next
End With
Unload Me
End Sub

mvg
Leo
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan