27. november 2003 - 21:31Der er
18 kommentarer og 1 løsning
Indtastning af tidsformater
Når man skal indtaste en hel masse forskelle møde- og gåtider på samme dato i et regneark, så er det lidt trættende, først at skulle indtaste dato. Er der en mulighed for, at man f.eks. i celle a1 kunne have en dato der skal være fælles for (næsten) alle klokkeslæt. Når jeg skriver næsten, så skyldes det, at enkelte har en gåtid efter midnat, og den skal der også tages højde for. Et sidespørgsmål: Er der en anden måde at taste timer og minutter på, end at bruge : i mellem. Det tegn mangler jo på det nummeriske tastur.
Hvis du skriver datoen i A1 og skriver tiderne i B kolonnen fra B2 og nedefter.
Kan du bruge denne makro, den skal sættes ind i ark modulet.
Formater kolonne B som datotid.
Tast så klokken ind, så vil datoen som står i A1 blive tilføjet automatisk.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B2:B65536")) Is Nothing Then ' kolonne B If Target < 1 Then Target = Target + Range("A1") ' A1 = din dato End If End If End Sub
der er ikke andre måder at taste tidspunkter på, end med :
Har prøvet og det virker fint. Men jeg har aldrig før prøvet at arbejde med makroer på den måde (kan kun finde ud af, at bruge funktionen: indspil makro og så gøre det makro skal gemme til næste gang). der må være en formel i din makro, som jeg ikke lige kan hitte ud af. Hvis jeg skal prøve uden makro, hvad skal jeg så indtaste i b2?
Jeg tænkte nu mere på om jeg selv kunne finde ud af at taste en formel uden brug af makro. Din makro virker helt fint, men jeg havde jo ikke tænkt mig, at klokkeslættene lige skulle tastes i kolonne B. Jeg ved godt, at det er et eksempel du har lavet til mig, men jeg ville så gerne selv kunne finde ud af, at lave den formel i en hvilken som helst celle. Altså en formel der fanger om værdien er <1 og derefter formel der så tilføjer datoen.
Target er den celle du har tastet ind i værdien i Target er et decimaltal, selv om du taster 10:30 er værdien 0,4375 i cellen den værdi + jeg med datoværdien som for 20-11-2003 er 37945
du kan ikke have en formel i en celle du taster ting ind i, så overskriver du jo formlenog en formel kan ikke skrive til andre celler end den den er i.
Jeg har et rigtig indviklet lønrapporteringsskema, som jeg gerne ville have ændret fra det nye år. Det er mange forskellige kolonner jeg skal taste i. Mødetid, gåtid, aftentid, nattid, sygetid og en masse forskellige tillæg. Tidspunkterne taster vi idag som f.eks. 16,75 og hvis gåtiden er f.eks. kl. 1, så taster vi kl. 25,00!!. Mit regneark er blevet udvidet kraftig gennem de sidste år, og det er efterhånden ikke til at overskue mere. Flere forskellige løngrupper, med hver sin overenskomst osv. Så lige nu, ved jeg ikke hvilke kolonner der skal bruges. Mit spørgsmål var blot første del, idet jeg var bange for at ændre til et rigtigt dato/tid format pga. besværlig indtastning. Men det kan jeg jo se, at det ikke behøver at være besværligt - så jeg må vel bare prøve mig frem.
Det virker fint, og jeg kan foretage mig alt muligt - skrive tekster, almindetal - blot jeg ikke bruger :. Men det eneste jeg umiddelbart ikke kan, er at trække 2 tidspunkter fra hinanden og gange med 24. Hvis du orker mere, så vil jeg blive glad for hvis du i din første makro lavede 3 linier mere som f.eks. definerede, at det også skal gælde for kolonne c,d og e. Så vil jeg tro, at jeg kan finde ud af, at redigere de 4 forskellige områder, til de områder der bliver aktuelle når jeg engang når dertil.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("C2:E65536")) Is Nothing Then ' kolonne B If Target < 1 Then Target = Target + Range("A1") ' A1 = din dato End If End If End Sub
Men det eneste jeg umiddelbart ikke kan, er at trække 2 tidspunkter fra hinanden og gange med 24.
Jeg er bare så besværlig (dum). Jeg mente hvis du i din makro kunne definere f.eks. 4 områder: b2:b10 og c2:10 og d2:10 og e2:e10 hver for sig, så vil jeg have 4 kolonner som jeg kan benytte dato/tid på. Jeg føler mig overbevist om, at jeg kan finde ud af, at ændre i makroen, hvis det nu er kolonne s jeg vil bruge istedet for c (eller lignende). Nej jeg kan ikke få det regnet ud. Den forsøger at køre makroen, og giver mig en fejlmeddelelse: Dernest returnerer den med et helt forkert tal.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("C2:E10")) Is Nothing Then If Target < 1 Then Target = Target + Range("A1") ' A1 = din dato End If End If End Sub
Takkker for din tålmodighed. Jeg (tror nok) at jeg kunne have ændret til at dække et større område. Men jeg ikke ikke finde ud af det, hvis det f.eks. skulle være fra b2:b10 og igen fra d2:d10 og s2:s10 og v2:v10. Men nu vil jeg ikke plage dig mere. Jeg tror godt, at jeg kan tilrættelægge mit ark, så kolonnerne med dato/tid kommer til at stå ved siden af hinanden. Endnu engang tak for hjælpen. Jeg må ved lejlighed se om jeg kan finde en step by step bog om VBA. Jeg arbejder videre på det i morgen. Du få pointene nu. Godnat herfra
En lille slutbemærkning. Du havde selvfølgelig ret i, at jeg kunne lave formler i cellerne. Jeg havde glemt paranteserne!!!! Så din makro der gælder for hele arket, må jo være det mest perfekte. (Jeg glæder mig næsten til at lave noget nyt for det kommende år)
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.