Hej, Datum börjar i excel med 1-e januari 1900, och ökar med ett för varje dag, så 39892 är den 20-e mars 2009 (dvs 39892 dagar efter 1-e januari 1900) Om man sätter till ett decimalkomma efter datumet får man tiden. Detta betyder att man kan addera eller subtrahera tid/datum, exempelvis är 0,25+0,25=0,5 (06:00 +06:00=12:00), dvs en halv dag. Funktionerna TIMME(ref) och MINUT(ref) returnerar timmar respektive minuter under den aktuella dagen Tack Anders, det var för mig en jätte bra start :-) Hmm. ok jag vet inte riktigt om jag fattat dig rätt, men om man kollar om det finns data i cell A1 och inte i B1 så ska man stämpla ut, om det finns data i båda kollar man nästa rad osv... Då kan man kolla att man inte kommit ner till sista raden för då ska man skriva in en formel för summering istället. så om man börjar med att skapa ett par funktioner för att kolla om en cell är ledig.. Ja, just det, angående skydd.. HejStämpelklocka i excel
Jag behöver skapa en stämpelklocka i excel. Jag vill kunna trycka på en knapp och kommandot Ctrl+Skift+. eller , ska utföras.
Exempel:
När jag trycker på knappen en gång ska klockan stämplas i cell A1(in), trycker jag igen stämplas i B1(ut), sedan A2, B2, A3,B3.....A10,B10.
Jag vet att det finns funktion som är =nu() men det fås både datum och tid, kan man få endast tid??
Jag behöver hjälp att skriva makro, och har ingen bra kunskaper i VB. Hur gör jag?
Snälla, hjälp mig..Sv: Stämpelklocka i excel
Funktionen NOW() eller NU() funkar att använda, men den blir uppdaterad när bladet räknas om. Ett sätt att lösa detta är att skriva in NU() i en cell, kopiera denna och klistra in den med valet endast värde. En tid/datum består av ett decimaltal, så det är bara att ta bort heltalsdelen och visa resten i datum/tid-format, exempelvis om resultatet ligger i A1, skriv =A1-AVKORTA(A1) så får du bara med tiden.
För att göra ett makro som gör detta börjar vi med att spela in infoga datum och döda referensen:
'Skriv aktuell tid/datum i cell A1
Range("A1").Select
ActiveCell.FormulaR1C1 = "=NOW()"
'Kopiera A1
Selection.Copy
'"Döda" formeln
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Om vi bara vill ha timmar kan vi spela in lite till:
Range("B1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]-TRUNC(RC[-1])"
Om man formaterar B-kolumnen med formatet tid får man klockslaget.Sv:Stämpelklocka i excel
Men ... jag ligger redan fast i nästa moment.. :-(
Mitt mål är,
Trycka på knappen en gång: stämplas datum på A1 och klockan på B1 vilket just nu fungerar alldeles utmärkt tack vare din beskrivning, dvs
Knapp tryck:
1. Datum A1, Klocka B1
2. Klocka C1 (Datum finns kvar men klockan syns inte, tack vare cell formatering på datum på kolumn A)
3. Datum A2, Klocka B2
4. Klocka C2
5. Datum A3, Klocka B3
6. Klocka C3
osv.
Just nu fungerar 1 alldeles utmärkt, men för att få 2,3,4 att fungera...tror jag det krävs antingen if-sats eller att manuellt skriva stegen? Hur gör man vet jag inte riktigt? Blir det en if-sats så vore snyggt att fortfarande ha möjlighet att begränsa max antal rader, t ex under en månad, för i slutet av månaden tas en summering på antal timmar man har varit exv i tjänst. (Det senare klarar jag själv ;-))
Sedan undrar jag möjligheten att låsa bladet för redigering, medan makrot fungerar och givna celler fylls i varje gång man trycker på knappen??
Tack på förhandSv: Stämpelklocka i excel
Sub SelFirstBlank()
Dim cnt As Integer
'Välj den första tomma cellen i aktuell kolumn
Do
If ActiveCell.Offset(cnt, 0).Formula = "" Then
ActiveCell.Offset(cnt, 0).Select
Exit Do
End If
cnt = cnt + 1
Loop
End Sub
Denna funktion testar den cell man står i, och kommer att ställa sig i första lediga cell i aktuell kolumn. Sedan gör vi en funktion av själva tidsskrivandet, den skriver helt enkelt in tiden i aktuell cell och formaterar den till tid.
Sub WriteCurrentTime()
'Skriv aktuell tid i aktiv cell
ActiveCell.FormulaR1C1 = "=NOW()-TRUNC(NOW())"
'Kopiera resultatet
Selection.Copy
'"Döda" formeln
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
'Ställ om format till tidsangivelse
Selection.NumberFormat = "hh:mm;@"
End Sub
Nu kan vi sätta ihop dessa till en funktion som stämplar in eller ut:
Sub WriteTime()
'Kolla i kolumn B efter första lediga cell
Range("B1").Select
'Hoppa till första tomma cellen i denna kolumn
SelFirstBlank
'Kolla om kolumn A är tom på denna rad
If ActiveCell.Offset(0, -1).Formula = "" Then
'A är tom, stämpla in
ActiveCell.Offset(0, -1).Select
End If
'Om A inte var tom ska vi stämpla ut, i vilket fall som helst, nu står
'vi i rätt cell, så skriv in tiden
WriteCurrentTime
End Sub
Eventuellt kan man göra om IF-satsen så att man skriver in formel för uträkning av tid när man skriver B:
If ActiveCell.Offset(0, -1).Formula = "" Then
'A är tom, stämpla in
ActiveCell.Offset(0, -1).Select
'Skriv tiden
WriteCurrentTime
Else
'A har värde, skriv i B
WriteCurrentTime
'Välj kolumn till höger (C)
ActiveCell.Offset(0, 1).Select
'Skriv in beräkning av tiden
ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-2]"
'Formatera för tid
Selection.NumberFormat = "hh:mm;@"
End If
Man kan även lägga in en kontroll av vilken rad man är på, men då bör man dela upp det hela i lite fler funktioner för att det hela ska bli läsbart...
För att ta reda på vilken rad man står på kan man läsa av ActiveCell.Row, och kolla om denna är större eller mindre, exempelvis:
If ActiveCell.Row >= 10 Then
'Här gör vi något om vi står på rad 10 eller längre ner
End IfSv:Stämpelklocka i excel
Börja makrot med:
ActiveSheet.Unprotect
och lås det i slutet:
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=TrueSv: Stämpelklocka i excel
Jag har precis börjat titta på VB i Excel för jag vill gärna ha denna stämpelklocka. När jag försöker få ihop det som står här i forumet får jag inte ihop det så det fungerar. Kan jag få hjälp med en hel programmering så knappen fungerar?
Private Sub CommandButton1_Click()
End Sub
När jag skapat knappen och visar kod så börjar det såhär. Jag lägger in kod mellan Sub och End Sub men när jag försöker lägga in koden som finns i diskussionen här ovan får jag felmeddelande. Hur ska det se ut i sin helhet?