Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Välkkyvä teksti lomakkeeseen

Sivun loppuun

miksu75 [26.03.2008 13:53:21]

#

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?

neau33 [26.03.2008 15:22:52]

#

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

miksu75 [26.03.2008 16:03:05]

#

Kiitti Nea!

labelin teksti vilkkuu ok, mutta miten saan sen vilkkumisen loppumaan eli labelissa oleva teksti jäisi normaalisti näkyviin checkbox2:n ruksaamisesta?

neau33 [26.03.2008 17:08:27]

#

Heippa tas miksu75!

unohda checkbox2 ja ota ruksi pois checkbox1:stä

miksu75 [26.03.2008 17:26:34]

#

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.

Antti Laaksonen [26.03.2008 18:27:46]

#

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.

neau33 [27.03.2008 04:07:04]

#

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

miksu75 [27.03.2008 13:26:12]

#

Kiitos teille! Sain näillä avuilla homman tehtyä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta