Olen ihan aloittelija VBA:n kanssa, mutta minun pitäisi saada yhteen lomakkeeseen seuraava toiminto koodattua:
Aikomuksenani on tehdä niin, että muokkausruudun ruksauksesta tulisi labeliin teksti. Tässä ei ole ongelmaa, mutta saako sitä labelissa näkyvää tekstiä vilkkumaan mitenkään? Jos saa, niin miten ja saako sen vilkkumisen myös pysähtymään, kun on ruksannut jonkin toisen muokkausruudun?? Miten tää voitais siis toteuttaa?
Heippa miksu75!
sovella oheisesta esimerkistä...
Private Sub UserForm_Activate() MainLuupi End Sub Public Sub MainLuupi() Dim teksti As String teksti = "jotain tekstiä..." Do: DoEvents If Me.CheckBox1.Value = True Then Dim delay As Single delay = 1 + Timer Do While delay > Timer: DoEvents Label1.Caption = teksti Loop delay = 1 + Timer Do While delay > Timer: DoEvents Label1.Caption = "" Loop Else Label1.Caption = teksti 'tai 'Label1.Caption = "" End If Loop End Sub
Kiitti Nea!
labelin teksti vilkkuu ok, mutta miten saan sen vilkkumisen loppumaan eli labelissa oleva teksti jäisi normaalisti näkyviin checkbox2:n ruksaamisesta?
Heippa tas miksu75!
unohda checkbox2 ja ota ruksi pois checkbox1:stä
Jees, tuolla tavalla se vilkkuminen loppuu kyllä ok. Ei kuitenkaan palvele lomakeeni ajatusta. Tarkoituksena olisi, että ruksista checkbox1:ssä labeliin tulisi vilkkuva teksti kuten nyt tuleekin. Jos checkbox1:ssä ei olekaan ruksia label1:n pitäisi olla tyhjä. Tarkoituksen myös, että valinta/ruksi toisessa kohtaa checkbox2:ssa taas lopettaisi vilkkumisen ja näkyviin jäisi labelissa oleva teksti.
Onko tämä haluamasi toiminta?
Dim vilkutus As Boolean Private Sub CheckBox1_Click() If CheckBox1.Value = False Then Label1.Caption = "" Exit Sub End If Label1.Caption = "Morjens!" vilkutus = True Dim aika As Single aika = Timer While vilkutus DoEvents If Timer >= aika + 0.2 Then Label1.Visible = Not Label1.Visible aika = Timer End If Wend Label1.Visible = True End Sub Private Sub CheckBox2_Click() vilkutus = False Label1.Visible = True End Sub
Luku "0.2" tarkoittaa, että teksti ilmestyy tai katoaa 0,2 sekunnin välein.
Heippa taas miksu75!
olisikohan tämän toiminta vieläkin lähempänä ajatustasi...
Private Sub UserForm_Activate() MainLuupi End Sub Public Sub MainLuupi() Me.Label1.Caption = "jotain tekstiä..." Do: DoEvents If Me.CheckBox1.Value = True Then Me.CheckBox2.Visible = True Else Me.CheckBox2.Value = False Me.CheckBox2.Visible = False End If If Me.CheckBox1.Value = True And _ Me.CheckBox2.Value = False Then Dim delay As Single delay = 0.75 + Timer Do While delay > Timer: DoEvents: Loop Me.Label1.Visible = Not Me.Label1.Visible Else If Me.CheckBox1.Value = True And _ Me.CheckBox2.Value = True Then Me.Label1.Visible = True Else: Me.Label1.Visible = False End If End If Loop End Sub
Kiitos teille! Sain näillä avuilla homman tehtyä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.