Meerdere modeless Userforms tegelijk waarvan 1 uitgeschakeld

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Hallo allemaal,

Hoewel domme vragen niet bestaan, zal ik er nu 1 plaatsen welke een grensgeval betreft.

Ik heb 2 formulieren staan. Het hoofdformulier wordt over heel mijn scherm met daarin een lopende klok middels een Loop. Direct hierna wordt er een tweede formulier geopend om in te kunnen loggen.

Om er voor te zorgen dat bij het openen van het tweede formulier, de klok in het eerste formulier blijft lopen, moest ik beide formulieren Modeless maken. Toch merkte ik dat er dan nog steeds handelingen zijn te verrichten welke niet verricht mogen worden, zoals het bedienen van knoppen op het eerste formulier. Dit formulier mag dus volledig niet werken dan behalve de lopende klok, want die moet wel blijven lopen. Na veel puzzelen heb ik een code gemaakt om behalve de klok alle controls uit te schakelen. Dit werkt goed. Echter zodra ik per ongeluk op het hoofdformulier klikte, verdween het inlog formulier naar de achtergrond waarna ik het door het uitschakelen van de controls niet meer opnieuw kon oproepen.

Om dit te voorkomen heb ik uit proef de eigenschap Enabled van het hoofdformulier ook op False gezet. Wat mij hierna opviel was dat de klok, anders dan ik had verwacht gewoon blijft doorlopen en door het klikken op dit formulier, het inlog formulier niet meer verdwijnt. Dit opgemerkt te hebben, heb ik hierna de code iets aangepast door de controls niet uit te schakelen, maar enkel het hoofdformulier. Gevolg, zodra het inlog formulier nu wordt geopend, blijft de klok lopen en kan ik zoals ik verwachte de controls niet gebruiken.

Om een lang verhaal kort te maken. Waarom blijft bij het uitschakelen van het hoofdformulier de klok vanwege de Loop wel lopen. Het lijkt mij dat er dan ergens iets niet klopt omdat een label met daarin een klok dan toch ook uitgeschakeld moet worden, of worden Loops niet uitgeschakeld?

Let op de Loop voor de klok staat in Userform_Activate.

Ik hoor het hopelijk wel, want ik wil zeker weten dat of dit wel of niet hoort.

Mijn dank.

De code:

Code:
Sub Control_Lock()
    If Not Lock_Frm_Hoofd Then
        Lock_Frm_Hoofd = True
    Else
        Lock_Frm_Hoofd = False
    End If
    
    With Frm_Hoofd
        .Enabled = IIf(Lock_Frm_Hoofd, False, True)
        
        'For Each ctrl In .Controls
         '   With ctrl
          '      If .Tag > vbNullString Then
           '         .Enabled = IIf(Lock_Frm_Hoofd, False, True)
            '     End If
                 
            'End With
        'Next ctrl
    End With
    
End Sub

De code Lock_Frm_Hoofd is een Boolean welke vermoedelijk zelfs kan wegblijven omdat ik dan slechts de code: Frm_Hoofd.Enabled = False kan gebruiken in plaats van deze omweg.
 
Laatst bewerkt:
Je kan het antwoord op je vraag in de Help terugvinden. Als je op Enabled zoekt, zie je dat de twee waarden TRUE of FALSE kunnen zijn. En dat heeft dan dit effect:
True - Het besturingselement kan de focus krijgen en reageren op gebeurtenissen die door de gebruiker worden gegeneerd en is toegankelijk via de programmacode (standaard).
False - De gebruiker kan niet communiceren met het besturingselement via de muis, toetsaanslagen, toegangstoetsen of sneltoetsen. Het besturingselement is meestal nog wel toegankelijk via de programmacode.
Lees het laatste zinnetje eens rustig door :).
 
Oke OctaFisch,

Maar er staat: Meestal!! Dus niet altijd!

Als dit zonder probleem kan blijven werken en als mijn gedachtegang goed is dan blijft er van de code slechts over:

Code:
Sub Control_Lock()
    Frm_Hoofd.Enabled = IIf(Frm_Hoofd.Enabled, False, True)

End Sub
 
Laatst bewerkt:
Of:
Code:
Sub Control_Lock()
    Frm_Hoofd.Enabled Is Not Frm_Hoofd.Enabled
End Sub
 
Hoi Edmoor, die opzet kende ik nog niet. Dank je, weer wat geleerd.

Al met al begrijp ik dus dat er geen problemen zullen ontstaan.

Een "domme" vraag is toch weer leerzaam geworden en dus gaat deze de grens naar het domme, net niet over. :d

Allen bedankt!!!
 
Als je iets niet weet en je vraagt om assistentie ben je nooit dom bezig ;)
 
Hmmm Eh Edmoor. Ik heb jouw code eens uitgeprobeerd. Deze werkt niet. Ik krijg: Compileerfout, verwacht expressie.

Heb VBA 6.3 onder Excel 2007. Wellicht dat het daarmee te maken heeft.
 
Mijn fout:
Code:
Sub Control_Lock()
    Frm_Hoofd.Enabled = Not Frm_Hoofd.Enabled
End Sub

De Brugse Zot doet z'n werk :p
 
Nou als dit je werk is dan zal je wel behoorlijk verdienen haha.

He maar zonder jouw code te hebben uitgeprobeerd.... Als ik deze lees dan zal deze pas enkel werken wordt het formulier alleen uitgeschakeld, maar zodra deze is uitgeschakeld, wordt deze niet meer ingeschakeld...... Of lees ik hem verkeerd? Toch als ik hem gebruik, werkt deze weer wel.

Het lijkt mij.. indien Ja dan Nee. Voor indien Nee dan Ja zie ik op het oog niets staan.
 
Laatst bewerkt:
Wat ik naar mijn mening verdien krijg ik helaas niet ;)
De code zet de waarde op True als deze False is en andersom.
Een soort van Toggle dus.
 
Laatst bewerkt:
Edmoor, Dat begreep ik al, maar je haalt het er lezend niet uit. Ik zou het dus als IIF schrijven daar ik dat weer duidelijker vind en je de code kan volgen.

Niemand krijgt wat men naar diens mening dient te verdienen. Je moet blij zijn met wat je hebt en krijgt. Liefde is onbetaalbaar en dus rijkdom.
 
Laatst bewerkt:
Edmoor, Dat begreep ik al, maar je haalt het er lezend niet uit. Ik zou het dus als IIF schrijven. Ik vind deze duidelijk en je kan de code volgen. Alhoewel niet alle codes te volgen kunnen zijn. Uiteindelijk gaat het om de werking.
Voor mij is het een duidelijk gebruik van True en False, maar je moet uiteraard gebruiken wat je zelf prettig vind.


Niemand krijgt wat men naar diens mening dient te verdienen. Je moet blij zijn met wat je hebt en krijgt. Liefde is onbetaalbaar en dus rijkdom.
Helemaal mee eens. Mijn opmerking erover wat dan ook meer als geintje bedoeld ;)
 
Je kunt allerlei oordelen hebben over de kwaliteit van vragen; daarover kan verschillend geoordeeld worden.

Over de informatieve inhoud van de titel van een draad kunnen we sneller overeenstemming bereiken: een titel 'userform' is niet informatief.
Voor iemand die hier al zoveel vragen heeft gesteld en dus vooraf natuurlijk ook in dit forum gebruik heeft gemaakt van de zoekfunktie mag onderhand duidelijk zijn dat een informatieve titel van een draad een gigantisch positief hulpmiddel kan zijn om de gebruiksvriendelijkheid en informatie-terugvindbaarheid van het formum te vergroten.

Dus: besteed svp wat minder aandacht aan een kwalifikatie van de inhoud van je eigen vraag, maar wijzig svp de titel van deze draad in een waarvan ook toekomstige bezoekers een zinvol gebruik kunnen maken.
 
Tja SNB mee eens, maar dan moet je wel de titel achteraf kunnen veranderen. Daarnaast mag ik er denk ik wel vanuit gaan de zoekfunctie van dit forum niet enkel naar titel kijkt maar ook naar inhoud waarmee dus de titel dus een beetje naar de achtergrond wordt gedrukt.
 
SNB heb gevonden hoe je de titel kan veranderen. Hoop op deze wijze iets meer duidelijkheid gegeven te hebben aan het onderwerp, al valt dit niet echt te benoemen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan