[Excel VBA] combobox neemt waarde van ander formulier niet goed over

Status
Niet open voor verdere reacties.

remcop1989

Gebruiker
Lid geworden
29 mrt 2012
Berichten
492
Ik heb een formulier "frmBedrijftoevoegen". Dit is op te roepen door de knop "Bedrijf toevoegen".

Zodra in dit formulier op OK wordt gedrukt in frmBedrijftoevoegen, worden eerst de ingevulde gegevens toegevoegd aan het betreffende werkblad. Vervolgens wil ik "frmContacttoevoegen" laten openen zodat er direct een contactpersoon toegevoegd kan worden voor het bedrijf.

Daarvoor wil ik op in veld frmContacttoevoegen.cmbBedrijfsnaam de waarde van frmBedrijftoevoegen.txtBedrijfsnaam laten overnemen.

Dit probeer ik middels de volgende code:

Code:
Private Sub cmdOK_Click()

    Dim appendRow As Long
    Dim bedrijfsnaam As String
    
    ' add 1 to get the row after the last-populated row
    appendRow = Worksheets("Bedrijven").Cells(Rows.Count, 1).End(xlUp).Row + 1

    Worksheets("Bedrijven").Range("A" & appendRow).Value = txtBedrijfsnaam
    Worksheets("Bedrijven").Range("B" & appendRow).Value = txtAdres
    Worksheets("Bedrijven").Range("C" & appendRow).Value = txtPostcode
    Worksheets("Bedrijven").Range("D" & appendRow).Value = txtPlaats
    Worksheets("Bedrijven").Range("E" & appendRow).Value = txtTelefoonalgemeen
    Worksheets("Bedrijven").Range("F" & appendRow).Value = txtWebsite
    Worksheets("Bedrijven").Range("G" & appendRow).Value = txtEmailalgemeen
    Worksheets("Bedrijven").Range("H" & appendRow).Value = txtBranche

frmContacttoevoegen.Show

frmContacttoevoegen.cmbBedrijfsnaam = frmBedrijftoevoegen.txtBedrijfsnaam

Unload frmBedrijftoevoegen

End Sub


Dit werkt maar half.

Als ik bijgevoegd bestand open, klik ik op "Bedrijf toevoegen". Ik vul de gegevens in en druk op OK. Ik krijg dan netjes frmContacttoevoegen te zien maar met een lege waarde in cmbBedrijfsnaam.

Als ik nu op OK druk en weer op "Bedrijf toevoegen" klik, vul ik weer een bedrijf in, klik vervolgens op OK en frmContacttoevoegen opent met in cmbBedrijfsnaam het bedrijf dat ik de vorige keer had ingevuld.

Wat zie ik over het hoofd?

Indien iets niet duidelijk is, vraag het gerust....
 

Bijlagen

Show is standaard "modal" dus de tweede regel wordt pas uitgevoerd als de form gesloten wordt. gewoon de twee regels omdraaien of een tussenvariabele gebruiken.
 
Hallo!

Het probleem is volgens mij dat de code chronologisch uitgevoerd wordt en na de opdracht frmContacttoevoegen.Show komt deze pas weer terug bij de opdracht frmContacttoevoegen.cmbBedrijfsnaam = ... als het formulier is afgesloten. Loop de macro maar eens in stap-modus door. Je kan beter vanuit de Initialize-procedure in frmContacttoevoegen terugverwijzen naar de waarde van frmBedrijftoevoegen.txtBedrijfsnaam (die is dan nog gewoon actief door het zo in elkaar te nesten).

Helpt dat?
 
Het omdraaien van enkele regels helpt inderdaad:

Code:
Private Sub cmdOK_Click()

    Dim appendRow As Long
    Dim bedrijfsnaam As String
    
    ' add 1 to get the row after the last-populated row
    appendRow = Worksheets("Bedrijven").Cells(Rows.Count, 1).End(xlUp).Row + 1

    Worksheets("Bedrijven").Range("A" & appendRow).Value = txtBedrijfsnaam
    Worksheets("Bedrijven").Range("B" & appendRow).Value = txtAdres
    Worksheets("Bedrijven").Range("C" & appendRow).Value = txtPostcode
    Worksheets("Bedrijven").Range("D" & appendRow).Value = txtPlaats
    Worksheets("Bedrijven").Range("E" & appendRow).Value = txtTelefoonalgemeen
    Worksheets("Bedrijven").Range("F" & appendRow).Value = txtWebsite
    Worksheets("Bedrijven").Range("G" & appendRow).Value = txtEmailalgemeen
    Worksheets("Bedrijven").Range("H" & appendRow).Value = txtBranche
    
frmContacttoevoegen.cmbBedrijfsnaam = frmBedrijftoevoegen.txtBedrijfsnaam
Unload frmBedrijftoevoegen
frmContacttoevoegen.Show

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