Formulieren wijzigen

Status
Niet open voor verdere reacties.

Sansje

Gebruiker
Lid geworden
21 dec 2014
Berichten
50
Hoi alle wijzen uit heel het land :D

Ik heb een formulier gemaakt waarna via een knop volgende een vervolgformulier zichtbaar wordt. Het eerste wordt dan verborgen via hide. Een aantal gegevens worden dan doorgevoerd op het tweede formulier via het gedeelte initialize.

Dit werkt. Echter zodra ik in het tweede formulier zie dat ik in het eerste formulier fouten heb gemaakt en ik deze wil aanpassen dan moet ik via een knop basisgegevens wijzigen terug. Tot zover gaat het allemaal goed. Hierna begint de puzzel, want als ik dan mijn fouten heb verbeterd dan worden deze niet meegenomen in het tweede formulier zodra ik deze weer zichtbaar maak.

Kennelijk werkt dit dus niet via form.show en form.hide. Eigenlijk zou ik het formulier dan moeten lossen en opnieuw moeten oproepen. Probleem is dan dat ik weer alle gegevens opnieuw moet invoeren. Heb ik eerlijk gezegd weinig zin in.

Heeft iemand enig idee hoe ik dit kan bereiken?

Zelf dacht ik aan:
Vanuit formulier Afspraak1

Code:
Me.Hide
    With Frm_Afspraak2
        .Label2 = " " & Frm_Afspraak1.ComboBox1
        .Label4 = " " & Frm_Afspraak1.TextBox10
    
        Select Case Frm_Afspraak1.ComboBox4
            Case Is = "Ja"
                .Label6 = " Verlegd"
            Case Is = "Nee"
                .Label6 = " Niet verlegd"
        End Select
        .Label8 = " " & Frm_Afspraak1.ComboBox3
        .Label10 = " " & Frm_Afspraak1.TextBox11
        .Label12 = " " & Frm_Afspraak1.TextBox12
        .Show
    End With

Groet Sandra
 
Laatst bewerkt:
Hallo Sandra,

Wat je graag wil dat werkt niet?
Zet de code eens in de "frm_afspraak2_Activate()"
 
Hoi HSV. Ja het werkt volgens mij wel, maar het lijkt mij makkelijker moeten kunnen. Ik heb ook het idee dat dit gevoeliger is voor problemen. Als ik jou goed begrijp dan zou ik dus private sub UserForm_Initialize in deze niet moeten gebruiken?
 
Laatst bewerkt:
Het Initialize gedeelte wordt alleen uitgevoerd bij het laden van een formulier. Als het formulier al geladen is en na deze verlaten te hebben weer actief wordt gemaakt wordt dat dus niet uitgevoerd. In plaats van het Initialize gedeelte kun je dan het Activate gedeelte gebruiken.

Edit:
Zie net dat HSV me al voor was ;)
 
Precies geraden.
Test het eens.

Je hebt het helemaal goed verwoord Ed. :thumb:
 
Laatst bewerkt:
Ik ga het eens proberen. Dan hoef ik even voor de duidelijkheid _initialize enkel maar te veranderen in _activate en kan ik alles onder me.hide weglaten?

Edit:

Komt wel even informatie bij. In de _initialize heb ik ook nog zaken staan die juist niet opnieuw moeten worden meegenomen. Deze zaken worden namelijk gaande weg het verder invullen van het tweede formulier aangepast. Kan ik hiervoor dan niet naast de _initialize ook een extra sub voor aanmaken met _activate. Of geeft dit dan onderling problemen?
 
Laatst bewerkt:
Waarschijnlijk wel, maar zet daar eerst eens een apostrof voor.
Zo ben je het niet kwijt.
 
Maak er dit van:
Code:
Me.Hide
Frm_Afspraak2.Show

Maar bewaar inderdaad de andere code, zoals HSV zei.
 
Laatst bewerkt:
Je aangepaste vraag van #6.

Dit geeft geen problemen om het ernaast te zetten.
De code met de Initialize werkt niet meer door de "Hide".
De code gaat verder met form_Activate().
 
Dan heb ik dit er nu van gemaakt.

Dit is voor het formulier Afspraak2


Code:
Private Sub UserForm_Initialize()
    
    Lb_Factuurregel = "U kunt nog 8 factuurregels invoeren"
    Tb_Factuurregel = "1"
    Cmb_Omschrijving.RowSource = "Omschrijving"
    Cmb_BTW.RowSource = "BTW"
    Cmb_Omschrijving.SetFocus
    Chk_Afsluiten = True

End Sub

Private Sub userform_activate()

    Label2 = " " & Frm_Afspraak1.ComboBox1
    Label4 = " " & Frm_Afspraak1.TextBox10
     
    Select Case Frm_Afspraak1.ComboBox4
        Case Is = "Ja"
            Label6 = " Verlegd"
        Case Is = "Nee"
            Label6 = " Niet verlegd"
    End Select

    Label8 = " " & Frm_Afspraak1.ComboBox3
    Label10 = " " & Frm_Afspraak1.TextBox11
    Label12 = " " & Frm_Afspraak1.TextBox12
    
End Sub

Zou het zo dan moeten werken zonder dat ik problemen krijg of bedoelde jullie dit niet?

Edit: Er stonden verkeerde puntjes voor de Labels
 
Laatst bewerkt:
Altijd een back-up maken Sandra.
 
Op zich ziet dat er goed uit maar de Select Case zou ik wijzigen in dit:
Label6 = Iif(Frm_Afspraak1.ComboBox4="Ja";"Verlegd"; "Niet verlegd")

Heb je een speciale bedoeling met die spatie voor iedere waarde of is dat alleen visueel?
 
HSV die heb ik gemaakt. Dat probleem heb ik ooit eerder gehad hihi.

Edmoor. Die code ken ik niet?

Die spaties is om de tekst even 1 spatie op te schuiven. Zo wordt deze inderdaad beter leesbaar in de labels. De labels zijn namelijk verzonken.

Ik ga de gok wagen
 
Jippie deze meid is helemaal blij. Het werkt.

Alleen edmoor als ik jouw code probeer in te voeren en enter geef dan krijg ik een pop-up compilatiefout verwacht lijstscheidingsteken of )
 
Het scheidingsteken is een vergissing van Ed.
Vervang de puntkomma door een komma.
 
Hoi hsv. Ik heb jouw aanpassing doorgevoerd. Nu werkt het inderdaad. Alleen en dat had ik eerst niet. Nu staat er in het volgende formulier al meteen "Niet Verlegd" terwijl er in die combobox4 helemaal nog geen waarde is ingevoerd. Met de select case had ik dat niet.
 
Ik weet niet welke items je combobox bevatten.
Als het er maar twee zijn ("Ja en Nee").
Code:
if frm_afspraak1.combobox4 <> vbnullstring then Label6 = Iif(Frm_Afspraak1.ComboBox4="Ja","Verlegd","Niet verlegd")
Of:
Code:
if frm_afspraak1.combobox4.listindex <> -1 then Label6 = Iif(Frm_Afspraak1.ComboBox4="Ja","Verlegd","Niet verlegd")

Of nog:
Code:
if frm_afspraak1.combobox4.listindex <> -1 then
   Label6 = Iif(Frm_Afspraak1.ComboBox4="Ja","Verlegd","Niet verlegd")
else 
  label6.caption = ""
end if
 
Laatst bewerkt:
HSV is mij net voor. IIF geeft enkel 2 waarden: Truepart of de Falsepart en als er niets is ingevoerd dan volgt automatisch de Falsepart. In jouw situatie moet er een extra vergelijking worden gemaakt. Als combobox4 leeg is dan mag er niets staan. Zodra deze niet leeg is dan geldt voor indien:"Ja" verlegd en indien:"Nee" niet verlegd.

Vandaar dat HSV nu met een code aankomt die beide vergelijkingen maakt.

Ik heb er ook al mee te stellen gehad en soms rommel ik er nog steeds mee.
 
Laatst bewerkt:
En nu heb jij HSV je bericht dus aangepast en de laatste 2 ken ik nog steeds niet... de listindex....Maar goed daar gaat het nu niet om.
 
Maarten 2 vergelijkingen. Waar haal jij die 2 vergelijkingen dan vandaan. Ik maak maar 1 vergelijking. Ik weet niet waar jij op doelt of jij begrijpt mij niet helemaal.

Hsv ik heb inderdaad in de combobox maar 2 items staan. De bovenste zou moeten voldoen. Deze ga ik zo even uitproberen. Ik ga eerst even mijn kind weer op bed leggen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan