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.