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 SubKiitti 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 SubLuku "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 SubKiitos teille! Sain näillä avuilla homman tehtyä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.