Print side | Luk vindue

betalig af feriepenge

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=2730
Udskrevet den: 27.Apr.2024 kl. 10:00


Emne: betalig af feriepenge
Besked fra: Henrik Nielsen
Emne: betalig af feriepenge
Posteringsdato: 23.Sep.2016 kl. 07:48
jeg roder lidt med komme-gå registrering,

kan der laves så dato og tid indsættes ved klik i cellen.

venlig hilsen
Henrik Nielsen



Svar:
Besked fra: Bjarnehansen
Posteringsdato: 23.Sep.2016 kl. 10:04
Så tror jeg vi skal over i noget VBA...


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: froksen
Posteringsdato: 29.Sep.2016 kl. 19:16
Hej

Lidt inddirekte svar. Måske kan du bruge noget herfra:  https://www.excel-regneark.dk/?pageIDX=188 - https://www.excel-regneark.dk/?pageIDX=188


Besked fra: Ib Hansen
Posteringsdato: 30.Sep.2016 kl. 09:18
Hej Henrik.

Nedenstående kode indsættes i VBA i den arkfane, koden skal virke på - F.eks. Ark1.
Du skal dobbelt-klikke i cellen.
Dobbelt-klik vil indsætte dags dato.
Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If IsEmpty(Target) Then
        Cancel = True
        Target = Date
    End If
End Sub
 Man kan finde mange koder på Google.
Koden fundet http://stackoverflow.com/questions/21606986/how-can-i-enter-a-date-into-an-excel-cell-with-a-double-click-but-have-it-only-e" rel="nofollow - HER

Ib

-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Henrik Nielsen
Posteringsdato: 30.Sep.2016 kl. 09:35
Hej IB

har du en vejledning til at indsætte i VBA (er ikke så stærk i den del)
har prøvet men det fungerer ikke.

venlig hilsen
Henrik Nielsen


Besked fra: Ib Hansen
Posteringsdato: 30.Sep.2016 kl. 09:37
Denne indsætter både Dato og Tidspunkt, når der dobbelt-klikkes.

Hvis du ikke vil have sekunderne med, kan du bare fjerne :ss i koden.

Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If IsEmpty(Target) Then
        Cancel = True
        Target = Date
        Target = Format(DateTime.Now, "dd-mm-yyyy   hh:mm:ss")
    End If
End Sub


Ib

-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Ib Hansen
Posteringsdato: 30.Sep.2016 kl. 09:47

Mærk hele koden i forum op, ved at trække musen hen over hele teksten, mens venstre musetast holdes nede.
Hold Ctrl nede og tast C = Kopiere den opmærkede tekst.

Åben VBA delen
- Åben dit regneark.
- Højreklik på den fane, koden skal køre på og klik på Vis programkode.
- Dette åbner VBA delen.

- Sæt musen ind den store tomme rude.
- Hold Ctrl nede og tast V = Indsætter den kopierede tekst.
- Luk VBA delen på lukke krydset.

Dobbelt-klik i en af cellerne på fanen

Her er koden igen med Dato og tidspunkt.
Men husk, det er computerens dato og tid der stemples - Hvis det ikke passer, vil der stemples en forkert dato og tid.
Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If IsEmpty(Target) Then
        Cancel = True
        Target = Date
        Target = Format(DateTime.Now, "dd-mm-yyyy   hh:mm:ss")
    End If
End Sub





-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Ib Hansen
Posteringsdato: 30.Sep.2016 kl. 10:06
Hvis du vil have måneden vist med bogstaver i stedet for tal, kan det sagtens ændres i kode.
Det er bare denne lille del af koden, der skal ændres "d. mmmm yyyy.

dd = Datoen vises med to cifre - F.eks. 03
d = Datoen vises med et cifre - F.eks. 3
d. = Punktum efter datoen = F.eks. 3.

mm = Måned vises med to cifre = F.eks. 09
mmm = Måned vises i kort format = F.eks. sep
mmmm = Måned vises i lang format = F.eks. september

yy = Årstal i kort format = F.eks. 16
yyyy = Årstal i lang format = F.eks. 2016

Du kan sætte bindestreg ind som separator eller bare et mellemrum.
Det kan laves, som man vil have det til at se ud.

Dato med punktum og lang måneds- og årtalsformat.
Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If IsEmpty(Target) Then
        Cancel = True
        Target = Date
        Target = Format(DateTime.Now, "d. mmmm yyyy   hh:mm:ss")
    End If
End Sub




-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Henrik Nielsen
Posteringsdato: 30.Sep.2016 kl. 10:17
Hej igen

der er noget af koden som bliver rød, når den indsættes, skal den det,
det virker ikke, måske er det bare en lille detalje.

jeg bruger excel 2016

henrik


Besked fra: Ib Hansen
Posteringsdato: 30.Sep.2016 kl. 10:23
Har du mærket hele koden op - Kopieret den - Og indsat den i VBA, på den fane, koden skal køre på ?

- Koden skal starte med Private Sub og slutte med End Sub.
- Vær sikker på koden er indsat i VBA på den rigtige fane - F.eks. Ark1

Kopier hele den blå tekst og indsæt den i VBA, som jeg bekrev oven over.

Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If IsEmpty(Target) Then
        Cancel = True
        Target = Date
        Target = Format(DateTime.Now, "d. mmmm yyyy   hh:mm:ss")
    End If
End Sub



-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Henrik Nielsen
Posteringsdato: 30.Sep.2016 kl. 10:24
Hej igen

jeg har flyttet på koden så linjerne står under hinanden, så nu virker det. tusind tak

kan det så også lade sig gøre at cellen låses samtidig med, så der ikke efterfølgende kan ændres på tidspunktet.

Henrik


Besked fra: Ib Hansen
Posteringsdato: 30.Sep.2016 kl. 11:08
Mht. at linjerne står lige under hinanden, har ingen betydning overhovedet.
Man forskyder kun linjerne for bedre at have overblik over koden og hvordan den hænger sammen.

Man må bare ikke ændre på linjerne, ved foreksempel at skrive hele koden i en lang linje.
Linjerne skal bare være indelt som de er.

Ja, det kan nok lade sig gøre at låse en celle, når den forlades.
Jeg ved bare ikke lige hvordan.

-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: excelent
Posteringsdato: 01.Okt.2016 kl. 09:47
Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("G1:G20")) Is Nothing Then Exit Sub
If Not IsEmpty(Target) Then Exit Sub
Target = Date
Target.Value = Format(DateTime.Now, "d. mmmm yyyy   hh:mm:ss")
End Sub

Ovenstående kode tillader dobbeltklik i G1:G20 hvis tom celle
Ret til aktuel

Gnaske hvis jeg indsætter din kode i min Excel 2016 DK
markeres kode linjerne med rød, dog ikke start og end sub
Jeg går ud fra du laver indrykninger med Tabulator tasten ?
Ved ikke hvorfor disse fortolkes forkert i xl2016

Måske Allan har de vise sten :-)

-------------
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!


Besked fra: excelent
Posteringsdato: 01.Okt.2016 kl. 10:27
Ovenstående forhindrer at du dobbeltklikker i celle som ikke er tom
Indsæt følgende kode i samme modul som får markør til at hoppe til A1
hvis celle ikke er tom

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("G1:G20")) Is Nothing Then Exit Sub
If Target <> "" Then Range("A1").Select
End Sub


-------------
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!


Besked fra: excelent
Posteringsdato: 01.Okt.2016 kl. 10:29
Ret "G1:G20" til aktuel og evt også A1 hvis markør skal hoppe andetsteds

-------------
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!


Besked fra: Henrik Nielsen
Posteringsdato: 01.Okt.2016 kl. 11:13
fantastisk forum, det jeg også søger er når dato og tid er indsat, må der ikke efterfølgende kunne skrives/rettes i cellen

venlig hilsen
henrik Nielsen


Besked fra: Henrik Nielsen
Posteringsdato: 01.Okt.2016 kl. 11:45
det hele virker nu, kan dog ikke trække starttid fra sluttid længere,
har prøvet forskellige formateringer, har fjernet sekunder da det ikke er
nødvendigt.

venlig hilsen
henrik nielsen


Besked fra: Ib Hansen
Posteringsdato: 02.Okt.2016 kl. 17:35
Excelent

Jeg fandt koden på nettet http://stackoverflow.com/questions/21606986/how-can-i-enter-a-date-into-an-excel-cell-with-a-double-click-but-have-it-only-e" rel="nofollow -

Ib

-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Ib Hansen
Posteringsdato: 02.Okt.2016 kl. 18:44
Henrik

Jeg har rodet en del med tidspunkter, dog uden at have fundet de helt vise sten.

Men måske virker dette.
- Højreklik på alle de celler, hvor Facit af din beregning mellem de to datoer og tidspunkter står i.
- Vælg Formater celler i dropdown popup'en.
- Åben fanen Tal i popup vinduet.
- Vælg Brugerdefineret nederst.
- Her har du nu mulighed for at vælge en masse formater eller selv skrive dem.

Prøv formatet [t]:mm - Med firkant parantes omkring t
Det vil beregne det samlede antal timer der er gået mellem de to datoer og klokkeslæt.
F.eks. fra 1. jan 2016 kl. 08:00 til 2. jan 2016 kl. 09:00 = 25:00 = (25 timer)

Hvis du i stedet prøver tt:mm vil det kun vise 1 time, da det er forskellen mellem kl. 08:00 og 09:00, selvom de ligger på forskellige datoer.

Prøv dig frem Wink




-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Ib Hansen
Posteringsdato: 02.Okt.2016 kl. 19:43
Henrik

Jeg har prøvet forskellige ting, der låser cellen, når der dobbeltklikkes på den og tror jeg har fundet en måde.

Denne kode forudsætter dog at hele arket er beskyttet, men de celler der må skrives i, er ubeskyttede.
Når der dobbeltklikkes på en celle, vil den så også blive beskyttet.

Hvis du ikke ved, hvordan du beskytter et ark og lader celle være ubeskyttede, må du skrive tilbage.

Hvis du bruger et password, når du beskytter hele arket, ser koden lidt anderledes ud, forstået på den måde, at så skal password indskrives i koden.
Her kommer begge koder.

Kode uden Password, når arket beskyttes


Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'---------------------------------------------------------
' Hvis cellen ikke er tom, hopper den til cellen til højre
'---------------------------------------------------------
If Not IsEmpty(Target) Then
ActiveCell.Offset(0, 1).Select ' Hvis den skal hoppe ned bruges (1, 0)
End If

'-----------------------------------------------------
' Hvis cellen er tom, indsætter den dato og klokkeslæt
'-----------------------------------------------------
If IsEmpty(Target) Then
Cancel = True
Target = Date
Target = Format(DateTime.Now, "d. mmmm yyyy   hh:mm")

'-----------------------------------------------------------------
' Låser først hele arket op - Låser cellen - Låser hele arket igen
'-----------------------------------------------------------------
ActiveSheet.Unprotect
Target.Locked = True
ActiveSheet.Protect
End If
End Sub

---------------------------------------------------------------------------------------------------------------------------------

Kode med Password, når arket beskyttes
Password du beskytter hele arket med, skal være fuldstændig identisk med password i koden.
Password i koden indsættes de to steder i koden med rødt.


Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'---------------------------------------------------------
' Hvis cellen ikke er tom, hopper den til cellen til højre
'---------------------------------------------------------
If Not IsEmpty(Target) Then
ActiveCell.Offset(0, 1).Select ' Koden der hopper til højre - Hvis den skal hoppe ned bruges (1, 0)
End If

'-----------------------------------------------------
' Hvis cellen er tom, indsætter den dato og klokkeslæt
'-----------------------------------------------------
If IsEmpty(Target) Then
Cancel = True
Target = Date
Target = Format(DateTime.Now, "d. mmmm yyyy   hh:mm")

'-----------------------------------------------------------------
' Låser først hele arket op - Låser cellen - Låser hele arket igen
'-----------------------------------------------------------------
ActiveSheet.Unprotect Password:="HER SKRIVES PASSWORD"
Target.Locked = True
ActiveSheet.Protect Password:="HER SKRIVES PASSWORD"
End If
End Sub

Se om det virker Wink

Ib



-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Henrik Nielsen
Posteringsdato: 02.Okt.2016 kl. 22:07
hej

har rodet med at formaterer cellerne til [t]:mm men kan ikke få den
til at tælle timer, det kan dog godt lykkedes hvis det kun er tiden som står i de celler som skal tælles samme, men når datoen kommer på så vil den ikke.

bruger excel 2016

venlig hilsen
Henrik Nielsen


Besked fra: Henrik Nielsen
Posteringsdato: 02.Okt.2016 kl. 22:17
Hej igen

hvordan tildeler man alle de behjælpelige herinde point.

Henrik


Besked fra: EXCELGAARD
Posteringsdato: 03.Okt.2016 kl. 09:04
Tryk på [Tak] knappen, ud for de indlæg, som du kan bruge - så får de vist hver 2 point hver.


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Bjarnehansen
Posteringsdato: 03.Okt.2016 kl. 10:46
prøv at /topic662.html - upload dit ark så vi kan se på det....


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: Ib Hansen
Posteringsdato: 03.Okt.2016 kl. 13:31
Jeg ved ikke om du vil have den til at hoppe en celle til højre, hvis der står dato/tid i cellen.
Eller om den skal beskytte cellen, når der dobbeltklikkes på den.

Men dette vedhæftede eksempel hopper til højre - Altså ingen beskyttelse.

Download, åben og test det.

Download uploads/1125/Indsæt_dato-tid_med_dobbeltklik_i_celle.xlsm" rel="nofollow - KLIK HER

Ib

-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Henrik Nielsen
Posteringsdato: 03.Okt.2016 kl. 15:54
uploads/208/time_-sag.xlsm" rel="nofollow - time_-sag.xlsm


Besked fra: Ib Hansen
Posteringsdato: 03.Okt.2016 kl. 18:01
Kolonnerne E:F:G er formateret rigtigt hele vejen ned, men du kan ikke have Kl: med i formateringen.
Excel tror Kl: er en del af koden og så kan den ikke finde ud af at trække de to tidspunkter fra hinanden.

Det eneste jeg har ændret i VBA er en enkelt linje.
Denne linje
Target.Value = Format(DateTime.Now, "d. mmmm yyyy kl:  hh:mm")

Er ændret til
Target = Format(DateTime.Now, "mm-dd-yyyy hh:mm")
Jeg har ladet linjen stå i VBA.
Den er grøn og du kan selv slette den.

Bemærk at d. mmmm yyyy er ændret til mm-dd-yyyy i formlen.
Det er fordi datoen i VBA skal skrives i engelsk format (måned-dato-år), for at VBA kan finde ud af det.

Hvis man ikke skriver datoen i engelsk format, vil 3/10 (3. okt) blive til 10/3 (10. mar) i cellen.
Datoformatet rettes herefter til i cellen, så den vises i dansk format.
Dette med datoformatet i VBA, havde jeg glemt i farten Ouch

uploads/1125/Ib_time_sag.xlsm" rel="nofollow - Download her

Ib


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Bjarnehansen
Posteringsdato: 03.Okt.2016 kl. 22:29
uploads/397/time_-sag_bj.xlsm" rel="nofollow - uploads/397/time_-sag_bj.xlsm

-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: Henrik Nielsen
Posteringsdato: 13.Okt.2016 kl. 19:54
Hej igen
og tusind tak for hjælpen,
nu er jeg så nået så langt at jeg skal til at tælle timer sammen på hver enkelt projekt. det skulle gerne være således sum at celler i G
sammentælles hvis f.eks. ('1'!B7)= (Projekter!A3)
venlig hilsen
Henrik Nielsen


Besked fra: Henrik Nielsen
Posteringsdato: 14.Okt.2016 kl. 16:54
Så er jeg kommet lidt videre.
=LOPSLAG(A4;'1'!B7:G35;6;FALSK)   den del fungerer, men der skal også laves en sortering og sammentælling, har lavet dette forsøg på sortering, =LOPSLAG(A3;'1'!B7:G34;6;FALSK)=HVIS('1'!C7;)=Opgaver!B3
og en del andre, men uden held desværre.
Er der nogen som kan se hvad der er galt.

venlig hilsen
Henrik Nielsen



Print side | Luk vindue