11. november 2006 - 07:36Der 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?
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
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
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.
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 ?
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.
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
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
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
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.
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
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.
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
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
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
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
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
Ø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.
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.
Synes godt om
Ny brugerNybegynder
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.