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

Userform werkt niet helemaal goed

Status
Niet open voor verdere reacties.

ronsom

Gebruiker
Lid geworden
6 mrt 2012
Berichten
232
Goedemorgen,

Met veel pijn en moeite heb ik een Userform in elkaar gezet. Helaas werkt niet alles zoals het zou moeten werken.

Als ik gegevens verander met Update dan schrijft hij ze niet weg naar de database.
De opmaak van de data is ook niet in orde, bijv. datum komt in de Userform als waarde tevoorschijn.
En het verwijderen van gegevens via de knop "verwijderen" gaat ook niet goed.
Is er iemand die mij kan helpen met deze foutjes.

Groet Ronsom
 

Bijlagen

  • Userform test.kopie.xlsm
    32,3 KB · Weergaven: 36
Maak van cmbNaam_Change eens dit en zie het verschil:
Code:
Private Sub cmbNaam_Change()
    If  cmbNaam.Text = "" Then
        MsgBox " naam kan niet leeg zijn.", vbCritical, "Naam "
        Exit Sub
    End If
 
    With Sheets("NAW")
        Set wrd = .Range("A2:A2000").Find(cmbNaam.Text, LookIn:=xlValues, lookat:=xlWhole)
        If Not wrd Is Nothing Then
            txtPrivaNr.Text = .Cells(wrd.Row, 2)
            txtVoornaam.Text = .Cells(wrd.Row, 3)
            txtAchternaam.Text = .Cells(wrd.Row, 4)
            txtVolledigeNaam.Text = .Cells(wrd.Row, 1)
            txtFunctie.Text = .Cells(wrd.Row, 6)
            txtGeboortedatum.Text = .Cells(wrd.Row, 7)
            txtPersNr.Text = .Cells(wrd.Row, 8)
            txtLoonnummer.Text = .Cells(wrd.Row, 9)
            txtKluisNr.Text = .Cells(wrd.Row, 10)
            txtDatumInDienst.Text = .Cells(wrd.Row, 11)
            txtDatumUitDienst.Text = .Cells(wrd.Row, 12)
            txtAdres.Text = .Cells(wrd.Row, 13)
            txtWoonplaats.Text = .Cells(wrd.Row, 14)
            txtHuis.Text = .Cells(wrd.Row, 15)
            txtAfstand.Text = .Cells(wrd.Row, 16)
            txtRijbewijs.Text = .Cells(wrd.Row, 17)
            txtVervoer.Text = .Cells(wrd.Row, 18)
            txtAutonummer.Text = .Cells(wrd.Row, 19)
            txtOpleiding.Text = .Cells(wrd.Row, 20)
            txtVorigWerk.Text = .Cells(wrd.Row, 21)
            txtTelefoon.Text = .Cells(wrd.Row, 22)
            txtWensWerkdagen.Text = .Cells(wrd.Row, 23)
        End If
    End With
End Sub

Let ook op je inspringpunten.
 
Laatst bewerkt:
Als de gegevens toch al in de combobox staat dan hoef je deze niet meer op te zoeken in het blad. Met format kan je textboxen opmaken. De code kan veel compacter als je textboxen gewoon doornummert. Bv Tb01, Tb02, etc. Als je dit in dezelfde volgorde doet al de kolommen in de tabellen dan kan je met een lusje deze eenvoudig vullen

Code:
Private Sub cmbNaam_Change()
  If Me.cmbNaam.ListIndex = -1 Then
    MsgBox " naam kan niet leeg zijn!", vbExclamation, "Naam "
    Exit Sub
  End If
  With cmbNaam
    txtPrivaNr.Value = .Column(1)
    txtVoornaam.Value = .Column(2)
    txtAchternaam.Value = .Column(3)
    txtVolledigeNaam.Value = .Column(4)
    txtFunctie.Value = .Column(5)
    txtGeboortedatum.Value = Format(.Column(6), "dd-mm-yyyy")
    txtPersNr.Value = .Column(7)
    txtLoonnummer.Value = .Column(8)
    txtKluisNr.Value = .Column(9)
    txtDatumInDienst.Value = Format(.Column(10), "dd-mm-yyyy")
    txtDatumUitDienst.Value = Format(.Column(11), "dd-mm-yyyy")
    txtAdres.Value = .Column(12)
    txtWoonplaats.Value = .Column(13)
    txtHuis.Value = .Column(14)
    txtAfstand.Value = .Column(15)
    txtRijbewijs.Value = .Column(16)
    txtVervoer.Value = .Column(17)
    txtAutonummer.Value = .Column(18)
    txtOpleiding.Value = .Column(19)
    txtVorigWerk.Value = .Column(20)
    txtTelefoon.Value = .Column(21)
    txtWensWerkdagen.Value = .Column(22)
  End With
End Sub
 
Hallo VeNa en Edmoor,

Bedankt voor jullie reactie. Nu komt inderdaad alles in het goede format in de Userform.
Daar ben ik blij mee!!!

Alleen als ik update doet hij alleen "Nr. "updaten, de rest wordt niet geüpdatet.

Ook merk ik dat ik niet met de tab knop naar de volgende textbox kan.
Bij verwijderen doet hij ook een foutmelding geven.
 
Waarom beginnen met zo'n groot formulier als je de basis niet begrijpt? Door het instellen van de tabstops kan je op de juiste manier door het formulier navigeren. Voor het updaten is 1 regel voldoende.

Code:
Sheets("NAW").ListObjects(1).DataBodyRange.Cells(cmbNaam.ListIndex + 1, 2).Resize(, 22) = Array(Tb01, Tb02, Tb03, Tb04, Tb05, CDate(Tb06), Tb07, Tb08, Tb09, CDate(Tb10), CDate(Tb11), Tb12, Tb13, Tb14, Tb15, Tb16, Tb17, Tb18, Tb19, Tb20, Tb21, Tb22)

Voor het verwijderen van de juiste rij kan je ook de listindex van de combobox gebruiken.
Code:
Sheets("NAW").ListObjects(1).ListRows(cmbNaam.ListIndex + 1).Delete
 

Bijlagen

  • Userform test.xlsb
    30,1 KB · Weergaven: 20
of zo?
 

Bijlagen

  • Userform test.kopie (1).xlsm
    29,5 KB · Weergaven: 29
Hallo VeNa,

Ik heb alle codes voor de Userform van internet afgehaald, het formulier had ik zelf gemaakt en het ging best wel goed. Totdat updaten niet wilde lukken, en dan houd mijn kennis(en dat is niet veel) op.
In jou oplossing kreeg ik nog wel een foutmelding met het updaten van de gegevens.
Bedankt voor je hulp!!
Uiteindelijk werkte de oplossing van emields gelijk goed.
Allemaal bedankt voor jullie hulp!!!!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan