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

Enter() in Class Module

Status
Niet open voor verdere reacties.

lam201

Gebruiker
Lid geworden
23 aug 2007
Berichten
557
Hi,


Ik heb de volgende uitdaging.
In een uderform heb ik 6 textboxes in een frame.
Zodra één van deze textboxes geactiveerd wordt (event: enter) dan moet de naam van deze textbox weer gegeven worden.
(in dit geval in een label)


Ik heb het nu voor elkaar gekregen dmv een mousedown event in een class module.
Maar hier wordt het Enter event niet ondersteunt.

gevolg is dat de textbox naam alleen weergegeven wordt bij een muisklik.
En niet met de Tab-toets.

(ik heb gekozen voor deze oplossing omdat het uiteidelijke formulier +/- 40 textboxes bevat. En zo op regels code bespaart kan worden)


weet iemand de oplossing dat dit ook werkt met de Tab-toets?

Lambert



Bekijk bijlage textboxes.xlsm
 
Dat Enter event is inderdaad een verwarrende omdat je die wel kunt gebruiken voor een Textbox in je Userform maar niet in een Class voor de Textboxes. Dit komt omdat dat Enter event niet een event van de Textbox is maar van het Userform. Hetzelfde geldt voor de OnKey events dus de Tab toets zal naar mijn mening ook niet lukken.
 
Laatst bewerkt:
Ik ben niet zo thuis in die klassenmodules. Maar is het niet te ondervangen met iets als Keypress en dan de de returncode van <Enter> op te vragen (CHR(13))?
 
Lambert,
het is ook mogelijk om de regels door een macro te laten schrijven zodat jouw macro de nieuwe macro's aanmaakt.

hier een voorbeeldje:
als je nu start worden de macro's aangemaakt.
om ze te activeren moet je nog een keer opstarten ivm compileren.

probeer maar eens uit.
probeer voor je opnieuw opstart de tabtoets maar uit dan reageren de tekstboxen nog niet.
kijk ook voor je op de openform knop drukt in de userform module dan zie je de macro's voor de tekstboxen nog niet.
na het opnieuw opstarten werkt het wel.

zoiets kun je zelf doen voor de exit's van de text_panes
 

Bijlagen

Laatst bewerkt:
Hierbij een voorbeeld hoe het Enter-event ingesteld en afgehandeld kan worden.
 

Bijlagen

Laatst bewerkt:
Rebmog,
ik vind het heel mooi wat je gemaakt hebt.
maar je zit op die manier wel in een constante loop.
gaat dat heel erg vertragen? of valt dat wel mee?
ps zo doet hij het ook:(nog steeds met loop)
Code:
Private bolFrmUnloaded As Boolean

Private Sub UserForm_Layout()
    Do While bolFrmUnloaded = False
        If ActiveControl.Name = "Frame1" Then
            Me.Label1.Caption = Me.ActiveControl.ActiveControl.Name
        Else
            Me.Label1.Caption = ""
        End If
        DoEvents
    Loop
End Sub

Private Sub UserForm_Terminate()
    bolFrmUnloaded = True
End Sub

Private Sub CommandButton1_Click()
    Unload Me
End Sub
 
Laatst bewerkt:
Ik denk dat het vertragende van de loop wel mee valt. Een mogelijkheid zonder loop zie ik zo gauw niet. In de bijlage heb ik de code iets aangepast, waarbij het event is opgenomen in een class en waarbij ook de overige events door de class worden afgehandeld. Ik denk dat dat iets fraaier is.
 

Bijlagen

Lambert,je schrijft:
(ik heb gekozen voor deze oplossing omdat het uiteidelijke formulier +/- 40 textboxes bevat. En zo op regels code bespaart kan worden)
is dat om minder te typen ?
of om een andere rede?
 
Sylvester,

Nee, niet om minder te typen.
Ten eerste is maakt het de code overzichtelijker. Omdat niet voor elk van de textboxes een sub geschreven hoeft te worden.
En ten tweede maakt het de verwerking sneller. ten minste, dat vermoed ik. Geen idee of het werkelijk zo is...

Bedankt allen voor bovenstaande oplossingen. Ik ga ze bestuderen.

Lambert
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan