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

Een Werkblad invullen m.b.v. Formulier / Userform

Status
Niet open voor verdere reacties.

McMacro

Gebruiker
Lid geworden
11 dec 2009
Berichten
80
Beste ExcelToppers ;)

Ik zou graag met behulp van een formulier in excel2000 een werkblad willen vullen, maar ook willen wijzigen. Dat mag via een knop maar dat mag ook via één of dubbelklik op een willekeurige cel binnen het ingevoerde bereik (de gegevenslijst).

In het voorbeeldbestand zie je dan ook een knop staan die een voorbeeld formulier opent. Daarin staan 2 keuzevakjes. een van de 2 mag geactiveerd worden. Dus of <nieuw> of <wijzigigen> als er voor wijzigen gekozen wordt, dan mag pas een <regelnummer> ingevuld worden.

Als er voor nieuw gekozen wordt moet na het invullen van de gegevnis in het formulier naar de eerst volgende lege regel gezocht worden en daar de gegevens ingevoegd te worden.

Zie voorbeeld voor een beter inzicht in het "probleem".

Weet iemand een oplossing hiervoor?
Veel plezier en succes !

Met vriendelijke groet,


McMacro ;)
 
Zorg ervoor dat je textboxen overeen komen met de kolomnummers dus Kolom A = Textbox1, Kolom B = TextBox2, enz... Zet bij regelnummer TextBox27 en kopie dan volgende code in je Userform.
Code:
Private Sub UserForm_Initialize()
    CommandButton1.Visible = False
    TextBox27.Visible = False
End Sub

Private Sub CheckBox1_Click()
    CommandButton1.Visible = IIf(CheckBox1, True, False)
End Sub

Private Sub CheckBox2_Click()
    TextBox27.Visible = IIf(CheckBox2, True, False)
    If TextBox27.Visible Then TextBox27.SetFocus
End Sub

Private Sub TextBox27_AfterUpdate()
    CommandButton1.Visible = IIf(TextBox27 <> "", True, False)
End Sub

Private Sub CommandButton1_Click()
NewRow = Cells(Rows.Count, 1).End(xlUp).Offset(1).Row
If CheckBox1 Then
    For i = 1 To 26
        Cells(NewRow, i) = Me("Textbox" & i).Value
    Next
ElseIf CheckBox2 Then
    For i = 1 To 26
        Cells(TextBox27.Value, i) = Me("Textbox" & i).Value
    Next
End If
CommandButton1.Visible = False
End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub
Wat gebeurd er, bij het openen van je userform zijn de knop OK en Textbox voor regelnummer verborgen. Selecteer je checkbox Nieuw wordt knop OK zichtbaar
Selecteer je checkbox Wijzig dan wordt textbox Regelnummer zichtbaar, krijgt de focus en moet ingevuld zijn alvorens knop OK zichtbaar wordt en je de wijzigingen kan doorvoeren.
Knop Annuleer sluit het Userform.
Je kan nu ook nog verdere beveiliging inbrengen zoals bv als Nieuw is aangevinkt Wijzig steeds leeg en omgekeerd. Of alle velden moet ingevuld zijn alvorens verder te kunnen maar daar moet jij zelf maar eens over nadenken hoe dummy-proof je formulier moet zijn.
 
Laatst bewerkt:
Bedankt voor de moeite !!!

Volgende vraag. Hoe krijg ik de textboxen gevuld met de inhoud uit het werkblad als ik bijvoorbeeld bij rijnummer '3' invul? Dan zou ik graag alle textboxen gevuld willen zien uit rij 3. (het kan zijn dat sommige cellen leeg zijn. Deze hoeven niet per definitie gevuld te zijn.

Met vriendelijke groet,

McMacro

Ps de oplossing met textbox27 en en de Ok-knop zijn geweldig!
 
Het mag ook zo zijn dat wanneer er een regelnummer is ingevuld in het userform, dat men dan op een knop <Ophalen> moet klikken en de tekst dan opgehaald wordt. Die moet dan ook gewijzigd kunnen worden in de textboxen.

En hoe krijg ik de textboxen gelinkt aan de textbox waarin het nummer van de rij staat, zodat de juiste informatie in de textboxen staat?

Met vriendleijke groet,


McMacro
 
Code:
Private Sub TextBox27_Change()
 Dim x As Variant
  For x = 1 To 26
      On Error Resume Next   'als  je tussentijds wilt wijzigen bv. verkeerde rij ingevoerd.
    Me("TextBox" & x).Text = Sheets("Blad1").Cells(TextBox27.Value, x).Value
  Next x
End Sub
 
Laatst bewerkt:
Thanks a lot!

Het werkt goed!

In de bijlage kunnen jullie zien hoe de dummy erop dit moment uit ziet, met .visible en .locked functies. (leuk spul)

Echter, er is nog een missend stukje VBA-code...

Code:
Private Sub CommandButton1_Click()

[COLOR="darkred"]NewRow = Cells(Rows.Count, 1).End(xlUp).Offset(1).Row[/COLOR]

If CheckBox1 Then
    For i = 1 To 26
        Cells(NewRow, i) = Me("Textbox" & i).Value
    Next
    
ElseIf CheckBox2 Then
    For i = 1 To 26
        Cells(TextBox100.Value, i) = Me("Textbox" & i).Value
    Next
    
End If

CommandButton1.Visible = False
CheckBox1 = IIf(CheckBox1, False, True)
End Sub

De rode code zou niet alleen in de éérste kolom moeten kijken of deze gevuld is, maar of er enig cel in de hele rij tussen kolom A t/m Z gevuld is. Zoja, dan moet de macro naar een andere regel moeten zoeken.

Nu is het zo dat de hele rij gevuld kan zijn, maar als in Kolom A niets staat overschrijft de macro de hele rij.

Ik hoop dat het te begrijpen is.

Met vriendelijke groet,


McMacro
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan