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

VBA commandbutton

Status
Niet open voor verdere reacties.

kruhe

Gebruiker
Lid geworden
20 mrt 2007
Berichten
33
Ik wil graag onder een commandbutton in een door mij ontworpen userform in VBA naar vorige (en andere knop naar volgende) record gaan.

Wie heeft de VBA code?
 
Je wil van de ene userform naar de andere gaan?

Anders gewoon in de ene userform zetten : Userform(nr).Show

Anders ga je, je wat duidelijker moeten maken ...
 
Ik bedoelde eigenlijk precies dezelfde knoppen zoals die in de Autoform al staan. Hiermee kun je naar een voorgaande record gaan en ook naar een volgend record.
 
Graag wat specifieker, zodat we er de knoppen code om heen kunnen plaatsen.
Welke code gebruik je nu om je gegevens te laten zien?
 
Nee de vraag is nog niet opgelost.

Ik heb een userform waarin de gebruiker allerlei gegevens kwijt kan. Deze gegevens sla ik daarna op in Blad 2. Ik zou echter een knop willen maken (zoals die ook bestaat in de AutoForm) waarmee ik van de record waarin ik open (hij opent in een nieuwe record) ook weer terug kan gaan. Deze VBA wil ik dan onder een knop zetten en klaar. Iets van UserForm1.Goto.Previous
 
Laatst bewerkt:
Fijn, bedankt! Ik ga er even naar kijken.

Ik was misschien nog niet helemaal duidelijk, maar ik heb een Userform gemaakt voor het invoeren van gegevens en ik had nog geen VBA gebruikt om de gegevens te laten zien.
 
Private Sub CommandButton1_Click()
'waar gaan we opslaan
legeregel = Worksheets("blad2").Range("A" & Rows.Count).End(xlUp).Row + 1
'wat gaan we opslaan
dagmelding = UserForm1.dag.Value
maandmelding = UserForm1.maand.Value
jaarmelding = UserForm1.jaar.Value
datummelding = dagmelding & "-" & maandmelding & "-" & jaarmelding

datummelding = Format(datummelding, "dd-mm-yyyy")
ingevuld_door = UserForm1.ingevuld_door.Text
machine_nr = UserForm1.machine_nr.Value
shift = UserForm1.shift.Text
Ordernummer = UserForm1.Ordernummer.Text
Klant = UserForm1.Klant.Text
Omschrijving = UserForm1.Omschrijving.Text
onttrekken = UserForm1.onttrekken.Value
extra_papier = UserForm1.extra_papier.Value
controle_pak = UserForm1.controle_pak.Value
Reden = UserForm1.Reden.Text
defect_limit = UserForm1.defect_limit.Value
geschat_aantal = UserForm1.geschat_aantal.Value
Positie = UserForm1.Positie.Text
soort = UserForm1.soort.Value
Pallet1 = UserForm1.Pallet1.Text
Pallet2 = UserForm1.Pallet2.Text
Pallet3 = UserForm1.Pallet3.Text
Pallet4 = UserForm1.Pallet4.Text
Pallet5 = UserForm1.Pallet5.Text
Pallet6 = UserForm1.Pallet6.Text
inhoud = UserForm1.inhoud.Value

If extra_papier = True And Reden = Empty Then
MsgBox "U heeft aangegeven dat u extra papier heeft aangevraagd, a.u.b. de reden aangeven"
Exit Sub
Else

If defect_limit = "D" And geschat_aantal = Empty Then
MsgBox "Geschat aantal defecten invullen a.u.b."
Exit Sub
Else

If defect_limit = "L" And geschat_aantal = Empty Then
MsgBox "Geschat aantal limits invullen a.u.b."
Exit Sub
Else

If datummelding = Empty Or ingevuld_door = Empty Or machine_nr = Empty Or shift = Empty Or Ordernummer = Empty Or Klant = Empty Or Omschrijving = Empty Then
MsgBox "Alle ordergegevens zijn verplichte velden, er zijn géén gegevens weggeschreven naar het Logboek/QVC"
Exit Sub
Else
Worksheets("blad2").Range("a" & legeregel) = datummelding
Worksheets("blad2").Range("b" & legeregel) = ingevuld_door
Worksheets("blad2").Range("c" & legeregel) = machine_nr
Worksheets("blad2").Range("d" & legeregel) = shift
Worksheets("blad2").Range("e" & legeregel) = Ordernummer
Worksheets("blad2").Range("f" & legeregel) = Klant
Worksheets("blad2").Range("g" & legeregel) = Omschrijving
Worksheets("blad2").Range("h" & legeregel) = onttrekken
Worksheets("blad2").Range("i" & legeregel) = extra_papier
Worksheets("blad2").Range("j" & legeregel) = controle_pak
Worksheets("blad2").Range("k" & legeregel) = Reden
Worksheets("blad2").Range("l" & legeregel) = defect_limit
Worksheets("blad2").Range("m" & legeregel) = geschat_aantal
Worksheets("blad2").Range("n" & legeregel) = Positie
Worksheets("blad2").Range("o" & legeregel) = soort
Worksheets("blad2").Range("p" & legeregel) = Pallet1
Worksheets("blad2").Range("q" & legeregel) = Pallet2
Worksheets("blad2").Range("r" & legeregel) = Pallet3
Worksheets("blad2").Range("s" & legeregel) = Pallet4
Worksheets("blad2").Range("t" & legeregel) = Pallet5
Worksheets("blad2").Range("u" & legeregel) = Pallet6
Worksheets("blad2").Range("v" & legeregel) = inhoud
MsgBox "De door u ingevoerde gegevens zijn opgeslagen in het Logboek/QVC"
UserForm1.Hide

End If

End If

End If

End If

Dim a As Integer
Dim i As Integer

a = SpinButton1.Value
For i = 1 To 4
Cells(a, i).Value = Choose(i, datummelding, ingevuld_door, machine_nr, shift).Value
Next
a = a + 1
If a > SpinButton1.Max Then SpinButton1.Max = a
SpinButton1.Value = a

End Sub

Private Sub CommandButton2_Click()
'een record terug

laatsteregel = Worksheets("blad2").Range("A" & Rows.Count).End(xlUp).Row

End Sub

Private Sub dag_Change()

End Sub

Private Sub jaar_Change()

End Sub

Private Sub SpinButton1_Change()
Dim i As Integer

For i = 1 To 4
Choose(i, datummelding, ingevuld_door, machine_nr, shift).Value = Cells(SpinButton1.Value, i).Value
Next
If ingevuld_door.TextLength = 0 Then ingevuld_door.Text = "Nieuw record"
End Sub

Private Sub UserForm_Click()

End Sub




Het werkt nog niet...
 
ja die we kennen we al heeeeeel lang (werd al eens onder een button gezet, waarop stond dat coca-cola u ging bedanken voor het vele cola drinken, met een bekerhouder).
 
Heb je trouwens ooit al gehoord van het declareren van variabelen? Voorkomt heel vaak problemen hoor ;)
 
Ja, maar ik kom er niet echt uit.

Geen dim gebruiken, maar Public?
 
OK, ik snap je nu. hier nog een keer

Code:
Private Sub CommandButton1_Click()
'waar gaan we opslaan
legeregel = Worksheets("blad2").Range("A" & Rows.Count).End(xlUp).Row + 1
'wat gaan we opslaan
dagmelding = UserForm1.dag.Value
maandmelding = UserForm1.maand.Value
jaarmelding = UserForm1.jaar.Value
datummelding = dagmelding & "-" & maandmelding & "-" & jaarmelding

datummelding = Format(datummelding, "dd-mm-yyyy")
ingevuld_door = UserForm1.ingevuld_door.Text
machine_nr = UserForm1.machine_nr.Value
shift = UserForm1.shift.Text
Ordernummer = UserForm1.Ordernummer.Text
Klant = UserForm1.Klant.Text
Omschrijving = UserForm1.Omschrijving.Text
onttrekken = UserForm1.onttrekken.Value
extra_papier = UserForm1.extra_papier.Value
controle_pak = UserForm1.controle_pak.Value
Reden = UserForm1.Reden.Text
defect_limit = UserForm1.defect_limit.Value
geschat_aantal = UserForm1.geschat_aantal.Value
Positie = UserForm1.Positie.Text
soort = UserForm1.soort.Value
Pallet1 = UserForm1.Pallet1.Text
Pallet2 = UserForm1.Pallet2.Text
Pallet3 = UserForm1.Pallet3.Text
Pallet4 = UserForm1.Pallet4.Text
Pallet5 = UserForm1.Pallet5.Text
Pallet6 = UserForm1.Pallet6.Text
inhoud = UserForm1.inhoud.Value

If extra_papier = True And Reden = Empty Then
    MsgBox "U heeft aangegeven dat u extra papier heeft aangevraagd, a.u.b. de reden aangeven"
    Exit Sub

Else
    Worksheets("blad2").Range("a" & legeregel) = datummelding
    Worksheets("blad2").Range("b" & legeregel) = ingevuld_door
    Worksheets("blad2").Range("c" & legeregel) = machine_nr
    Worksheets("blad2").Range("d" & legeregel) = shift
    Worksheets("blad2").Range("e" & legeregel) = Ordernummer
    Worksheets("blad2").Range("f" & legeregel) = Klant
    Worksheets("blad2").Range("g" & legeregel) = Omschrijving
    Worksheets("blad2").Range("h" & legeregel) = onttrekken
    Worksheets("blad2").Range("i" & legeregel) = extra_papier
    Worksheets("blad2").Range("j" & legeregel) = controle_pak
    Worksheets("blad2").Range("k" & legeregel) = Reden
    Worksheets("blad2").Range("l" & legeregel) = defect_limit
    Worksheets("blad2").Range("m" & legeregel) = geschat_aantal
    Worksheets("blad2").Range("n" & legeregel) = Positie
    Worksheets("blad2").Range("o" & legeregel) = soort
    Worksheets("blad2").Range("p" & legeregel) = Pallet1
    Worksheets("blad2").Range("q" & legeregel) = Pallet2
    Worksheets("blad2").Range("r" & legeregel) = Pallet3
    Worksheets("blad2").Range("s" & legeregel) = Pallet4
    Worksheets("blad2").Range("t" & legeregel) = Pallet5
    Worksheets("blad2").Range("u" & legeregel) = Pallet6
    Worksheets("blad2").Range("v" & legeregel) = inhoud
    MsgBox "De door u ingevoerde gegevens zijn opgeslagen in het Logboek/QVC"
    UserForm1.Hide
    

End If

End Sub




Private Sub SpinButton1_Change()
  Dim i As Integer
  
  For i = 1 To 4
    Choose(i, datummelding, ingevuld_door, machine_nr, shift).Value = Cells(SpinButton1.Value, i).Value
  Next
  If TextBox1.TextLength = 0 Then TextBox1.Text = "Nieuw record"
End Sub
 
Laatst bewerkt:
Nu nog de enkele quotes wegdoen (2 keer) en je bent er.
 
Voor de code:

delete dingen als

Code:
Private Sub dag_Change()

End Sub

en analoge code. Daar gebeurt toch niets. Dus dat mag weg.

Vervolgens kijk je eens naar het With ... End With statement.

Als je dat hebt gedaan kunnen we aan de code beginnen, maar is die tenminste opgekuist.

Wigi
 
Vervolgens kijk je eens naar het With ... End With statement.

Ik bedoel:

Code:
With UserForm1
        datummelding = Format(datummelding, "dd-mm-yyyy")
        ingevuld_door = .ingevuld_door.Text
        machine_nr = .machine_nr.Value
        shift = .shift.Text
        Ordernummer = .Ordernummer.Text
        Klant = .Klant.Text
        Omschrijving = .Omschrijving.Text
        onttrekken = .onttrekken.Value
        extra_papier = .extra_papier.Value
        controle_pak = .controle_pak.Value
        Reden = .Reden.Text
        defect_limit = .defect_limit.Value
        geschat_aantal = .geschat_aantal.Value
        Positie = .Positie.Text
        soort = .soort.Value
        Pallet1 = .Pallet1.Text
        Pallet2 = .Pallet2.Text
        Pallet3 = .Pallet3.Text
        Pallet4 = .Pallet4.Text
        Pallet5 = .Pallet5.Text
        Pallet6 = .Pallet6.Text
        inhoud = .inhoud.Value
    End With

Doe hetzelfde daaronder.

Wigi
 
Like this?

Code:
Private Sub CommandButton1_Click()
'waar gaan we opslaan
legeregel = Worksheets("blad2").Range("A" & Rows.Count).End(xlUp).Row + 1
'wat gaan we opslaan
dagmelding = UserForm1.dag.Value
maandmelding = UserForm1.maand.Value
jaarmelding = UserForm1.jaar.Value
datummelding = dagmelding & "-" & maandmelding & "-" & jaarmelding

With UserForm1
datummelding = Format(datummelding, "dd-mm-yyyy")
ingevuld_door = UserForm1.ingevuld_door.Text
machine_nr = UserForm1.machine_nr.Value
shift = UserForm1.shift.Text
Ordernummer = UserForm1.Ordernummer.Text
Klant = UserForm1.Klant.Text
Omschrijving = UserForm1.Omschrijving.Text
onttrekken = UserForm1.onttrekken.Value
extra_papier = UserForm1.extra_papier.Value
controle_pak = UserForm1.controle_pak.Value
Reden = UserForm1.Reden.Text
defect_limit = UserForm1.defect_limit.Value
geschat_aantal = UserForm1.geschat_aantal.Value
Positie = UserForm1.Positie.Text
soort = UserForm1.soort.Value
Pallet1 = UserForm1.Pallet1.Text
Pallet2 = UserForm1.Pallet2.Text
Pallet3 = UserForm1.Pallet3.Text
Pallet4 = UserForm1.Pallet4.Text
Pallet5 = UserForm1.Pallet5.Text
Pallet6 = UserForm1.Pallet6.Text
inhoud = UserForm1.inhoud.Value
End With

If extra_papier = True And Reden = Empty Then
    MsgBox "U heeft aangegeven dat u extra papier heeft aangevraagd, a.u.b. de reden aangeven"
    Exit Sub

Else
    Worksheets("blad2").Range("a" & legeregel) = datummelding
    Worksheets("blad2").Range("b" & legeregel) = ingevuld_door
    Worksheets("blad2").Range("c" & legeregel) = machine_nr
    Worksheets("blad2").Range("d" & legeregel) = shift
    Worksheets("blad2").Range("e" & legeregel) = Ordernummer
    Worksheets("blad2").Range("f" & legeregel) = Klant
    Worksheets("blad2").Range("g" & legeregel) = Omschrijving
    Worksheets("blad2").Range("h" & legeregel) = onttrekken
    Worksheets("blad2").Range("i" & legeregel) = extra_papier
    Worksheets("blad2").Range("j" & legeregel) = controle_pak
    Worksheets("blad2").Range("k" & legeregel) = Reden
    Worksheets("blad2").Range("l" & legeregel) = defect_limit
    Worksheets("blad2").Range("m" & legeregel) = geschat_aantal
    Worksheets("blad2").Range("n" & legeregel) = Positie
    Worksheets("blad2").Range("o" & legeregel) = soort
    Worksheets("blad2").Range("p" & legeregel) = Pallet1
    Worksheets("blad2").Range("q" & legeregel) = Pallet2
    Worksheets("blad2").Range("r" & legeregel) = Pallet3
    Worksheets("blad2").Range("s" & legeregel) = Pallet4
    Worksheets("blad2").Range("t" & legeregel) = Pallet5
    Worksheets("blad2").Range("u" & legeregel) = Pallet6
    Worksheets("blad2").Range("v" & legeregel) = inhoud
    MsgBox "De door u ingevoerde gegevens zijn opgeslagen in het Logboek/QVC"
    UserForm1.Hide
    

End If

End Sub




Private Sub SpinButton1_Change()
With UserForm1
  Dim i As Integer
  
  For i = 1 To 4
    Choose(i, datummelding, ingevuld_door, machine_nr, shift).Value = Cells(SpinButton1.Value, i).Value
  Next
  If TextBox1.TextLength = 0 Then TextBox1.Text = "Nieuw record"
  End With
End Sub





Private Sub UserForm_Click()

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan