Tarkoituksena on, että soluihin E1 ja E2 syötetyt lukuarvot käynnistävät seuraavan toiminnon:
Solussa A1 vilkkuu kirjain ”A” kun soluun E1 on syötetty lukuarvo
Solussa A2 vilkkuu soluun E2 syötetty lukuarvo
Jos solun E2 lukuarvo on liian suuri, solussa A3 vilkkuu teksti ”SUURI”
Jos solun E2 lukuarvo on liian pieni, solussa A3 vilkkuu teksti ”PIENI”
Kun Excelin avaa, makrot toimii välillä ja taas toisinaan ei (teksti vilkkuu, ei vilku). Varmaankin on olemassa toimivammat makrot ko. toiminnalle?
Taul1 (HARJOITUS) Option Explicit Public CellCheck As Boolean Public CellCheck1 As Boolean Public CellCheck2 As Boolean Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Sheets("HARJOITUS ").Range("E1").Value > 0 And CellCheck = False Then Call StartBlink CellCheck = True ElseIf Sheets("HARJOITUS ").Range("E1").Value = 0 And CellCheck = True Then Call StopBlink CellCheck = False ElseIf Sheets("HARJOITUS ").Range("E1").Value > Sheets("HARJOITUS ").Range("E2").Value_ And CellCheck1 = False Then Call StartBlink1 CellCheck1 = True ElseIf Sheets("HARJOITUS ").Range("E2").Value = 0 And CellCheck1 = True Then Call StopBlink1 CellCheck1 = False ElseIf Sheets("HARJOITUS ").Range("E1").Value < Sheets("HARJOITUS ").Range("E2").Value_ And CellCheck2 = False Then Call StartBlink2 CellCheck2 = True ElseIf Sheets("HARJOITUS ").Range("E2").Value = 0 And CellCheck2 = True Then Call StopBlink2 CellCheck2 = False End If End Sub Module1 Option Explicit Public RunWhen As Double Sub StartBlink() If Sheets("HARJOITUS").Range("A1, A2").Font.ColorIndex = 4 Then Sheets("HARJOITUS ").Range("A1,A2").Font.Color = RGB(81, 104, 123) Sheets("HARJOITUS ").Range("A1").Value = "A" Sheets("HARJOITUS ").Range("A2").Value = Sheets("HARJOITUS ").Range("E2").Value Else Sheets("HARJOITUS ").Range("A1, A2").Font.ColorIndex = 4 End If RunWhen = Now + TimeSerial(0, 0, 2) Application.OnTime RunWhen, "StartBlink", , True End Sub Sub StopBlink() Sheets("HARJOITUS ").Range("A1, A2").Font.Color = RGB(81, 104, 123) Application.OnTime RunWhen, "StartBlink", , False End Sub Module 2 Option Explicit Public RunWhen1 As Double Sub StartBlink1() If Sheets("HARJOITUS ").Range("E2").Value > Sheets("HARJOITUS ").Range("E1").Value_ And Sheets("HARJOITUS ").Range("A3").Font.ColorIndex = 4 Then Sheets("HARJOITUS ").Range("A3").Font.Color = RGB(81, 104, 123) Sheets("HARJOITUS ").Range("A3").Value = "SUURI” Else Sheets("HARJOITUS ").Range("A3").Font.ColorIndex = 4 End If RunWhen1 = Now + TimeSerial(0, 0, 2) Application.OnTime RunWhen1, "StartBlink1", , True End Sub Sub StopBlink1() Sheets("HARJOITUS ").Range("A3").Font.Color = RGB(81, 104, 123) Application.OnTime RunWhen1, "StartBlink1", , False End Sub Module 3 Option Explicit Public RunWhen2 As Double Sub StartBlink2() If Sheets("HARJOITUS”).Range("E2").Value < Sheets("HARJOITUS ").Range("E1").Value_ And Sheets("HARJOITUS ").Range("A3").Font.ColorIndex = 4 Then Sheets("HARJOITUS ").Range("A3").Font.Color = RGB(81, 104, 123) Sheets("HARJOITUS ").Range("A3").Value = "PIENI” Else Sheets("HARJOITUS ").Range("A3").Font.ColorIndex = 4 End If RunWhen2 = Now + TimeSerial(0, 0, 2) Application.OnTime RunWhen2, "StartBlink2", , True End Sub Sub StopBlink2() Sheets("HARJOITUS ").Range("A3").Font.Color = RGB(81, 104, 123) Application.OnTime RunWhen2, "StartBlink2", , False End Sub
Kaiken kuvaamasi sisällön voit luoda helposti ja luotettavasti tavallisilla Excelin kaavoilla ilman makroja. Sitten voit laittaa solut vilkkumaan jatkuvasti alusta asti, koska toisaalta tyhjässä solussa vilkkuminen ei haittaa. Vilkkumiseen on ohjeita netissä.
Viestissä olisi järkevää kirjoittaa koodit niiden kooditagien sisäpuolelle (tämä onneksi on viestiisi korjattu) ja mielellään esim. yksi moduuli yhteen laatikkoon. Kannattaa kiinnittää koodissa huomiota myös siihen, että lainausmerkit ovat oikeanlaiset eli tavalliset "-merkit eivätkä tekstinkäsittelyohjelman ”-merkit. (Katso eroa: "
vs ”
.)
Aihe on jo aika vanha, joten et voi enää vastata siihen.