Avatar billede sjokoman Juniormester
11. november 2006 - 07:36 Der er 33 kommentarer og
1 løsning

indsætte alarm i række når tiden nærmer sig, f.eks skifte farve

Jeg bruger et regneark med vba. I hver række er der en tidsangivelse. Hvis jeg ikke har fået en melding (krydset af) senest en time før tidspunktet, vil jeg gerne have, at linien skifter farve eventuelt blinker. Er dette muligt?

mvh
Avatar billede excelent Ekspert
11. november 2006 - 09:24 #1
ja du skal bruge en Timer
hvis du lige skriver hvilke celler der skal blinke
og i hvilke celler dine tidsangivelser er
så skal jeg se om den kan skrues sammen
Avatar billede sjokoman Juniormester
11. november 2006 - 13:06 #2
f5 til f26
jeg "Hakker" af i g5 til g26 når folk har meldt sig til :-)
Avatar billede sjokoman Juniormester
11. november 2006 - 13:09 #3
Jeg må hellere skrive, at hver række er seperat for et forløb så jeg har 22 rækker seperat der skal checkes. Det er ikke sådan, at tiderne er fortløbende i rækkefølgen.
Avatar billede excelent Ekspert
11. november 2006 - 14:34 #4
Public RunWhen As Double

Sub StartTimer()
Dim t
On Error Resume Next
For t = 5 To 26
If Cells(t, 6) = "" Then Cells(t, 6).Interior.ColorIndex = xlNone: GoTo ud
If Cells(t, 6).Value <= Time + TimeSerial(0, 5, 0) Then Cells(t, 6).Interior.ColorIndex = 3: GoTo ud
If Cells(t, 6).Value <= Time + TimeSerial(0, 30, 0) Then Cells(t, 6).Interior.ColorIndex = 6: GoTo ud
If Cells(t, 6).Value <= Time + TimeSerial(1, 0, 0) Then Cells(t, 6).Interior.ColorIndex = 4: GoTo ud
ud:
Next
RunWhen = Now + TimeSerial(0, 0, 1) ' Chekker hver sek
Application.OnTime RunWhen, "StartTimer", , True
[A1].Value = Format(Time, "hh:mm:ss") '**
End Sub

Sub StopTimer()
    On Error Resume Next
    Application.OnTime RunWhen, "StartTimer", , False
End Sub

indsæt ovenstående i et alm. modul
obs linie med '** indsætter aktuel tid i A1
hvis den ikke skal det, så blot remark linien
1 time før bliver F5:F26 grøn, 30 min før skiftes til gul og 5 min før til rød
kan ændres efter ønske i linier med TimeSerial(0, 5, 0) *her er 5 min.

spørgsmål: hvis G5:G26 er tom, så skal der ikke farves ?
Avatar billede sjokoman Juniormester
11. november 2006 - 15:30 #5
Det ser meget fint ud, 1 time før bliver cellen grøn, 30 minutter før bliver den gul og 5 minutter før rød. Jeg ændrede på din t6 til t9 jeg skrev fejl. Hvis jeg feks i celle t6 krydser af at manden er mødt f.eks med et "m" eller "x" så skal der ikke ændres farver, kan du også gøre dette? Det er kun, hvis der ikke er krydset af i kolonne 6 at der skal alarmeres.
Avatar billede excelent Ekspert
11. november 2006 - 15:50 #6
indsæt denne lige efter "For t = 5 To 26"
If Cells(t, 6) <> "" Then Cells(t, 9).Interior.ColorIndex = xlNone: GoTo ud
Avatar billede sjokoman Juniormester
11. november 2006 - 16:00 #7
Det virker meget fint :-))
En sidste ting, starter timeren automatisk når jeg lukker regnearket op?

mvh
Avatar billede excelent Ekspert
11. november 2006 - 16:03 #8
indsæt disse i ThisWorkbook
Private Sub Workbook_Open()
    StartTimer
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    StopTimer
End Sub
Avatar billede sjokoman Juniormester
11. november 2006 - 16:11 #9
Tak for hjælpen send et svar, så jeg kan afgive point, og som sagt mange tak
Avatar billede excelent Ekspert
11. november 2006 - 16:14 #10
velbekom
Avatar billede sjokoman Juniormester
11. november 2006 - 16:32 #11
excelent: du kan få lidt flere point, jeg ved ikke hvordan men: Arket bliver oprettet idag, men "nedtællingen" skal først starte i morgen. I felt b3 skriver jeg dags dato så det er et eller andet med idag()+1
Avatar billede excelent Ekspert
11. november 2006 - 17:46 #12
kikker på det
Avatar billede excelent Ekspert
11. november 2006 - 17:56 #13
Private Sub Workbook_Open()
  StartTimer
End Sub

udskiftes med denne:

Private Sub Workbook_Open()
If Format(Now, "dd-mm-yyyy") >= "12-11-2006" Then StartTimer
End Sub

husk i ThisWorkbook
og den er gratis :-)
Avatar billede excelent Ekspert
11. november 2006 - 18:04 #14
hmm virker kun når man åbner filen !

er filen åben hele natten, eller bliver den åbnet i morgen?
Avatar billede sjokoman Juniormester
11. november 2006 - 21:17 #15
Er lukket om natten måske skal den videresendes.
mvh
Avatar billede sjokoman Juniormester
12. november 2006 - 13:07 #16
I dag dagen efter jeg oprettede regnearket med de tider der skal chekes virkede det ikke. Jeg slettede alle data og satte nye ind, så virkede timeren igen i fælet cd2 flettet har jeg datoen for imorgen så man kan sige, at timeren skal starte der??
mvh johnny
Avatar billede excelent Ekspert
12. november 2006 - 16:28 #17
jeg går ud fra du indtaster tider i rette tidsformat som fx. 16:12:00

har revideret koden lidt så den starter når dato >= din dato i celle cd2
så skal du ikke bruge ændringen i koden i ThisWorkbook
prøv det og sig til hvis der er nogen problemer

Public RunWhen As Double

Sub StartTimer()
Dim t
On Error Resume Next
If Now <= Cells(2, "cd") Then GoTo vent
For t = 5 To 26
If Cells(t, 6) <> "" Then Cells(t, 9).Interior.ColorIndex = xlNone: GoTo ud
If Cells(t, 9) = "" Then GoTo ud
If Cells(t, 9).Value <= Time + TimeSerial(0, 5, 0) Then Cells(t, 9).Interior.ColorIndex = 3: GoTo ud
If Cells(t, 9).Value <= Time + TimeSerial(0, 30, 0) Then Cells(t, 9).Interior.ColorIndex = 6: GoTo ud
If Cells(t, 9).Value <= Time + TimeSerial(1, 0, 0) Then Cells(t, 9).Interior.ColorIndex = 4: GoTo ud
ud:
Next
vent:
RunWhen = Now + TimeSerial(0, 0, 1) ' Chekker hver sek
Application.OnTime RunWhen, "StartTimer", , True
[A1].Value = Format(Time, "hh:mm:ss") '**
End Sub

Sub StopTimer()
    On Error Resume Next
    Application.OnTime RunWhen, "StartTimer", , False
End Sub
Avatar billede klid Nybegynder
13. november 2006 - 12:35 #18
Hvad med at glemme alle de der flotte programmer og blot benytte funktionen betinget formatering. Den er lidtindviklet at breuge, men næppe så indviklet som alt det der koderi.

Sagen er at vi skal sammenligne to tidspunkter, hvor den ene er "nu" (=A1), den anden er "før" (=B1).

Hvis du under betinget formatering skriver:
=a1>B1

og så vælger en meget rød baggrund, så er du ved at være hjemme
Skriver du
=$a$1>$b$1
kan du kopier formatet (tryk på kopisymbol og straks derefter formatsymbol) til hele arket.
Avatar billede excelent Ekspert
13. november 2006 - 19:29 #19
tjaa hvordan syntes du selv det går  :-)
Avatar billede sjokoman Juniormester
13. november 2006 - 21:08 #20
Jeg har prøvet den sidste løsning fra excelent, men den ændrede ikke noget, klids ved jeg ikke hvordan jeg skal sætte løsningen ind.
Jegkunne forestille mig, at excelent' løsning startede når regnearket blev oprettet, men jeg ved det ikke?
mvh
Avatar billede excelent Ekspert
13. november 2006 - 21:56 #21
går aktuel tid i A1 ?
skifter cellerne farve som aftalt ud fra de tider du angir ?
Avatar billede sjokoman Juniormester
13. november 2006 - 22:15 #22
Jeg har ændret din a1 tid til a3 tid da jeg bruger a1 til tekst, men ellers har jeg i b2  aktuel tid med kun tt:mm =nu(), som starter når jeg opretter arket.
Når jeg har brugt arket, sletter jeg de fleste felter med en makro, så arket er frisk og nyt til næste indtastning.

farveskiftet er perfekt

mvh
Avatar billede excelent Ekspert
13. november 2006 - 22:17 #23
er det så opstart ved fremtidig dato der ikke virker ?
Avatar billede sjokoman Juniormester
13. november 2006 - 22:22 #24
Jeg er vist lidt træt i dag, :-( b2 stempler tiden, hvor jeg starter arket!
mvh
Avatar billede sjokoman Juniormester
13. november 2006 - 22:33 #25
Hvis jeg skriver en tid f.eks 10:00 og klokken er som nu 22:30 bliver feltet rødt. Hvis jeg skriver en tid efter 22:30 bliver farverne som aftalt ændret når tiden nærmer sig.
Hvis timeren bare kunne starte efter 24:00 eller + 1 dag kunne det måske hjælpe?
mvh
Avatar billede excelent Ekspert
14. november 2006 - 05:38 #26
Koden er baseret på at du indtaster startdato i celle B3
hvis det ikke er B3 så skal koden rettes ind efter hvor du så har dato
(så kan du indtaste tider dagen før uden cellerne farves)
Koden skriver aktuel tid i celle B2 (er først og fremmest som kontrol af om kode kører)
I kolonne F testes om celler er tomme (om du har 'hakket af') der testes ikke
specifik om du har tastet x eller m,- blot om du har tastet noget,
hvis de er tomme farves celler ellers ikke.

hvis det ikke virker efter hensigten så blot sig til.


Public RunWhen As Double

Sub StartTimer()
Dim t
On Error Resume Next
If Now <= Cells(3, "B") Then GoTo vent
For t = 5 To 26
If Cells(t, 6) <> "" Then Cells(t, 9).Interior.ColorIndex = xlNone: GoTo ud
If Cells(t, 9) = "" Then Cells(t, 9).Interior.ColorIndex = xlNone: GoTo ud
If Cells(t, 9).Value <= Time + TimeSerial(0, 5, 0) Then Cells(t, 9).Interior.ColorIndex = 3: GoTo ud
If Cells(t, 9).Value <= Time + TimeSerial(0, 30, 0) Then Cells(t, 9).Interior.ColorIndex = 6: GoTo ud
If Cells(t, 9).Value <= Time + TimeSerial(1, 0, 0) Then Cells(t, 9).Interior.ColorIndex = 4: GoTo ud
ud:
Next
vent:
RunWhen = Now + TimeSerial(0, 0, 1) ' Chekker hver sek
Application.OnTime RunWhen, "StartTimer", , True
[B2].Value = Format(Time, "hh:mm:ss") '**
End Sub

Sub StopTimer()
    On Error Resume Next
    Application.OnTime RunWhen, "StartTimer", , False
End Sub
Avatar billede sjokoman Juniormester
14. november 2006 - 06:48 #27
Virker stadig ikke, mit b3 er formateret, så det viser dd-mmm med =nu() kommandoen, har det betydning?
Jeg har lige tastet 06:00  (kl. er 06:47) og feltet bliver rødt, min email er johnnymadsen@email.dk hvis det er nemmere at sende en fil?
mvh
Avatar billede excelent Ekspert
14. november 2006 - 10:05 #28
ja du skal indtaste datoen manuelt fx. 15-11-2006
hvis der først skal farves i morgen
brug ikke nu()
Avatar billede excelent Ekspert
14. november 2006 - 11:17 #29
ok nu tror jeg jeg ved hvad du mener

du vil ha den automatisk skal skrive dags dato i B3
så skal koden sørge for at det alligevel først er dagen efter
der farves?
kikker på det
måske først efter arb.tid
Avatar billede excelent Ekspert
14. november 2006 - 16:24 #30
udskift linien lige under On Error med denne
If Now <= Cells(3, "B") + TimeSerial(24, 0, 0) Then GoTo vent

så kan du indsætte formlen =nu() i celle B3

prøv det
Avatar billede sjokoman Juniormester
14. november 2006 - 18:27 #31
Jeg takker, foreløbig ser det ud som om det virker, jeg har gjort som sædvanligt, lukket filen ned, men har problemer med at få timer slut etc til at acceptere en lukning af filen. Jeg åbner den i morgen og ser hvordan det forløber, og du hører nærmere.
mvh
Avatar billede sjokoman Juniormester
15. november 2006 - 17:25 #32
Øv, det virkede ikke idag, jeg har nu tastet d.d. ind i et blank felt og ser i morgen.
Jeg har forøvrigt et felt der hedder =nu()+1 som angiver, at det er i morgen, det sker.

mvh Johnny
Avatar billede excelent Ekspert
15. november 2006 - 18:03 #33
prøv send arket

pm@madsen.tdcadsl.dk
Avatar billede excelent Ekspert
15. november 2006 - 18:18 #34
kommer lige i tanke om, at det jo må være fordi vi anvende nu()
og den bliver jo opdateret automatisk nå du åbner arket
så ind til videre må du indtaste dags dato manuelt
CTRL+SHIFT+ENTER gir d.d.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester