• 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 op mijn zenuwen

Status
Niet open voor verdere reacties.

grenouille

Gebruiker
Lid geworden
2 jan 2007
Berichten
5
Hallo,

ik heb een userform gemaakt in VBA met wat invulvelden en knoppen. De knoppen gaan na of alle vereiste velden zijn ingevuld en bewaren, indien dat het geval is, de spreadsheet. Alles werkte tot voor kort prima. En nu, all of a sudden, willen de MsgBoxen niet meer sluiten wanneer er op OK wordt geklikt.
Er is ook een knop die een verborgen sheet zou moeten unhiden en activeren; dat werkt nu plots ook niet meer.

Iemand enig idee?

By the way : als ik het formulier 'run' vanuit de VBEditor werkt alles wel normaal.

Alvast bedankt,

Grenouille
 
Grenouille,

Allereerst: welkom op Helpmij.

Je hebt niet per ongeluk handmatig je sheet al geunhide?
Hoe staat het met je beveiliging van je bladen? staat deze aan of uit?

Misschien een leeg voorbeeld file aanhangen of je code posten? dit werk wat sneller dan gis werk.


Groet,
Ferenc

ps.
Graag je code tussen de code tags plaatsen (je code selecteren en dan op het #-teken drukken boven aan je vraag.
 
Bedankt voor de snelle reactie. In bijlage het formulier (project is beveiligd met een paswoord, gebruik hiervoor bv2006 )

Alvast bedankt voor de moeite

Grenouille
 

Bijlagen

  • Form.zip
    71,8 KB · Weergaven: 37
Ik zou beginnen met het volgende aan te passen

Verander bijvoorbeeld:
Code:
ActiveWorkbook.Sheets("DATA").Activate

        Range("B16").Select
        ActiveCell.value = txtST1.value
        
        Range("B17").Select
        ActiveCell.value = txtSM1.value
        
        Range("B19").Select
        ActiveCell.value = txtST2.value
        
        Range("B20").Select
        ActiveCell.value = txtSM2.value
        
        Range("B22").Select
        ActiveCell.value = txtST3.value
        
        Range("B23").Select
        ActiveCell.value = txtSM3.value
        
        Range("B25").Select
        ActiveCell.value = txtST4.value
        
        Range("B26").Select
        ActiveCell.value = txtSM4.value
In:
Code:
With Sheets("DATA")
        .Range("B16").value = txtST1.value
        .Range("B17").value = txtSM1.value
        .Range("B19").value = txtST2.value
        .Range("B20").value = txtSM2.value
        .Range("B22").value = txtST3.value
        .Range("B23").value = txtSM3.value
        .Range("B25").value = txtST4.value
        .Range("B26").value = txtSM4.value
    End With

Dus gebruik zo min mogelijk Select. Ook Acivate is niet nodig
Ik heb dit op een paar plaatsen gedaan, en nu verdwijnt de msgbox bij mijn wel
 
Zie dat Spidie me voor geweest is.

Bij werkt het een stuk makkelijker als je de code plaatst zoals spiderman er een voorbeeld van heeft gegeven.

Denk dat Excel aan het doordraaien was doordat het om de regel iets moest selecteren voordat er weer wat kan gebeuren.

Groet,
Ferenc
 
Ik heb de code aangepast, maar de msgbox wil nog steeds niet weg.

ik heb ook wel een userform initialize procedure

Code:
ActiveWorkbook.Sheets("DATA").Activate

    Range("B2").Select
    txtPN.value = ActiveCell.value
    
    Range("B3").Select
    txtPSB.value = ActiveCell.value
    
    Range("B4").Select
    txtPZC.value = ActiveCell.value
    
    Range("B5").Select
    txtPT.value = ActiveCell.value
    
    Range("B6").Select
    txtPF.value = ActiveCell.value
    
    Range("B7").Select
    txtPE.value = ActiveCell.value
    
    Range("B9").Select
    txtCN.value = ActiveCell.value
    
    Range("B10").Select
    txtCSB.value = ActiveCell.value
    
    Range("B11").Select
    txtCZC.value = ActiveCell.value
    
    Range("B12").Select
    txtCA.value = ActiveCell.value
    
    Range("B13").Select
    txtCV.value = ActiveCell.value
    
    Range("B14").Select
    txtCH.value = ActiveCell.value
    
    Range("B16").Select
    txtST1.value = ActiveCell.value
    
    Range("B17").Select
    txtSM1.value = ActiveCell.value
    
    Range("B19").Select
    txtST2.value = ActiveCell.value
    
    Range("B20").Select
    txtSM2.value = ActiveCell.value
    
    Range("B22").Select
    txtST3.value = ActiveCell.value
    
    Range("B23").Select
    txtSM3.value = ActiveCell.value
    
    Range("B25").Select
    txtST4.value = ActiveCell.value
    
    Range("B26").Select
    txtSM4.value = ActiveCell.value
    
    Range("B29").Select
    txtDT.value = ActiveCell.value
    
    Range("B30").Select
    ComboBox1.value = ActiveCell.value
    
    Range("B31").Select
    txtDTCUSTOM.value = ActiveCell.value
    
    Range("B32").Select
    txtDCAT.value = ActiveCell.value
    
    Range("B42").Select
    cMUN.value = ActiveCell.value
    
    Range("B43").Select
    cMUT.value = ActiveCell.value
    
    Range("B44").Select
    cMUA.value = ActiveCell.value
    
    Range("B45").Select
    cMUP.value = ActiveCell.value
    
    Range("B46").Select
    cMUF.value = ActiveCell.value
    
    Range("B48").Select
    cMUC.value = ActiveCell.value
    
    Range("B49").Select
    cMUFUNC.value = ActiveCell.value
    
    Range("B51").Select
    cMFS.value = ActiveCell.value
    
    Range("B54").Select
    txtMFR.value = ActiveCell.value
    
    Range("B55").Select
    txtMFCC.value = ActiveCell.value
    
    Range("B56").Select
    txtMFBCC.value = ActiveCell.value
    
    Range("B58").Select
    txtLU.value = ActiveCell.value
    
    Range("B59").Select
    txtLP.value = ActiveCell.value

Hoe kan ik dit met een With routine doen? Want hier wordt het formulier ingevuld aan de hand vd gegevens in de sheet (en dus niet andersom zoals in het voorbeeld dat jullie gaven)
 
Maak eens van deze code:
Code:
Range("B2").Select
    txtPN.value = ActiveCell.value

Dit:
Code:
txtPN.value = Range("B2")

En dan van alle regels die je zo hebt uitgevoerd.
Je moet proberen zo weinig mogelijk select te gebruiken..

Groet,
Ferenc
 
Was al op de helft

Code:
Private Sub UserForm_Initialize()
    'HideTitleBar Me

    ComboBox1.List = Array("Nieuws", "Artikels", "Produkten", "Evenementen", "Andere")

With Sheets("DATA")
    txtPN.value = .Range("B2")
    txtPSB.value = .Range("B3")
    txtPZC.value = .Range("B4")
    txtPT.value = .Range("B5")
    txtPF.value = .Range("B6")
    txtPE.value = .Range("B7")
    txtCN.value = .Range("B9")
    txtCSB.value = .Range("B10")
    txtCZC.value = .Range("B11")
    txtCA.value = .Range("B12")
    txtCV.value = .Range("B13")
    txtCH.value = .Range("B14")
    txtST1.value = .Range("B16")
    txtSM1.value = .Range("B17")
    txtST2.value = .Range("B19")
    txtSM2.value = .Range("B20")
    txtST3.value = .Range("B22")
    txtSM3.value = .Range("B23")
    txtST4.value = .Range("B25")
    txtSM4.value = .Range("B26")
    txtDT.value = .Range("B29")
    
    ComboBox1.value = .Range("B30")
    
    txtDTCUSTOM.value = .Range("B31")
    txtDCAT.value = .Range("B32")

    cMUN.value = .Range("B42")
    cMUT.value = .Range("B43")
    cMUA.value = .Range("B44")
    cMUP.value = .Range("B45")
    cMUF.value = .Range("B46")
    cMUC.value = .Range("B48")
    cMUFUNC.value = .Range("B49")
    cMFS.value = .Range("B51")
    
    txtMFR.value = .Range("B54")
    txtMFCC.value = .Range("B55")
    txtMFBCC.value = .Range("B56")
    txtLU.value = .Range("B58")
    txtLP.value = .Range("B59")
End With
    
End Sub
 
Grenouille

Aan deze topic op Ozgrid ga jij heel veel hebben. Ik beloof het ;) Ook anderen moeten dit eens lezen.

Wigi
 
Wigi,

Bedankt voor de link. Ik heb het eens bekeken.
Voor alle duidelijkheid : ik ben nog maar sinds 1 week bezig met VBA. Ik doe dus zomaar wat :)

Het is mij niet helemaal duidelijk waar ik die twee functies juist moet plaatsen (Btn_OK_Click() en Load_Controls() )
Het is mij ook niet helemaal duidelijk hoe de textboxen worden geassocieerd met de knoppen. Als ik het goed begrepen heb krijgen de knoppen via hun tag velden uit een bepaalde sheet toegewezen, maar hoe zit dat andersom? Ttz : ik wil bvb dat knop1 alleen de waarden van txtbox1 en txtbox2 naar de sheet schrijven.

Alvast bedankt voor je geduld

Grenouille
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan