Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Excelin fonttiongelma

Jamro [18.07.2019 23:35:49]

#

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

Metabolix [19.07.2019 22:50:23]

#

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 .)

Vastaus

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

Tietoa sivustosta