Print side | Luk vindue

Datostempel

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=227
Udskrevet den: 04.Dec.2024 kl. 20:51


Emne: Datostempel
Besked fra: Jørgen
Emne: Datostempel
Posteringsdato: 09.Feb.2011 kl. 11:02
Hej
I BST Utilities er der en funktion der indsætter datostempel. Det virker fint.
 
Mit problem er bare at jeg gerne vil have excel til at indsætte datostempel i en celle, når en anden celle når en bestemt værdi.
 
Hvis jeg bruger en normal "IF" og =TODAY(), så vil datoen blive opdateret hvergang jeg åbner arket.
Hvordan kan man få excel til at indsætte dagsdato, og så "låse" datostemplet, så det ikke ændre sig?
 
MVH
Jørgen



Svar:
Besked fra: Allan
Posteringsdato: 09.Feb.2011 kl. 11:48
Hej Jørgen,
 
Du kan bruge denne makro:
 
Sub FrysDato()
If Range("A1").Value = "DinVærdi" Then Range("B1") = Format(Now, "dd-mm-yyyy")
End Sub
Koden kigger i A1
Hvis teksten i A1 = DinVærdi så Skrives dags dato i B1
 
Ved du hvordan man lægger den ind og tilretter den dit behov?
 
//Allan


Besked fra: Jørgen
Posteringsdato: 09.Feb.2011 kl. 11:56
Hej Allan
 
Det var hurtigt!!
Så vidt jeg kan se har din makro samme problem som en almindelig "IF" formel.
 
Hvis man kører makroen flere gange, så vil den opdaterer datoen.
Et andet problem er at det er en hel kollonne med værdier, som efterhånden når den værdi som jeg måler på, og når de så har den værdi, så vil jeg gerne have sat et datostembel.
 
Din makro kikker så vidt jeg kan se kun på en enkelt celle, og kræver at man "aktiverer" den for at få sat datoen. (så kan man jo lige så godt skrive den)
 
Kan du se problemet?
 
MVH
Jørgen


Besked fra: Allan
Posteringsdato: 09.Feb.2011 kl. 12:08
Hej Jørgen,
 
Både ja og nej, makroen har den fordel at den kun opdaterer datoen når makroen bliver kørt, dermed kan man selv styre hvornår handlingen udføres.
En formel vil derimod automatisk korrigere datoen hvis kriteriet er mødt, du kan med andre ord ikke styre den.
 
Du skriver en hel kolonne, kan du definere lidt nærmere.
Lidt á la:
 
Hvis værdien i området A1: A100 er lig med 'Ja' så skal der sættes dags dato i kolonne B
Hvis der i forvejen står en dato, feltet ignoreres og koden skal gå videre til næste.
Koden ville i så fald være:
 
Sub FrysDato()
MinVaerdi = "Ja"
For Each c In Range("A1:A100").Cells
    If c.Value = MinVaerdi And Range("B" & c.Row).Value = "" Then
        Range("B" & c.Row).Value = Format(Now, "dd-mm-yyyy")
    End If
Next c
End Sub
 
//Allan


Besked fra: Jørgen
Posteringsdato: 09.Feb.2011 kl. 12:25
Hej Allan
Jeg tror at vi nærmer os noget jeg kan bruge. Prøver lige at arbejde lidt videre med det. Hvis jeg går i stå, så vender jeg tilbage.
Tak for hjælpen (indtil nu)
 
Jørgen


Besked fra: Allan
Posteringsdato: 09.Feb.2011 kl. 12:56
Velbekomme Jørgen, Tak for din tilbagemelding Wink
Kom endelig tilbage hvis du møder udfordringer på vejen.
 
//Allan


-------------
MVH

Allan
https://www.excel-regneark.dk" rel="nofollow - Excel-regneark.dk - Gratis skabeloner til Excel
Få over 120 ekstra funktioner med Danmarks bedste add-in


Besked fra: Guests
Posteringsdato: 12.Feb.2011 kl. 18:41

Jeg beklager, hvis dette opfattes som et forsøg at stjæle tråden men det er så beslægtet så jeg tænkte det ikke gjorde så meget at samle det.

Jeg står overfor at skulle bruge noget tilsvarende, og jeg har da også fået denne til at virke. Min udfordring består dog i at, jeg gerne skulle have en slags "nu" stempel der registrerer, når nogen har ændret i et givet felt. Eks.
Kolonner er de forskellige trin i en opgave (Består af 5 trin)
Rækkerne er forskellige opgaver, der skal i arkiv når 5. trin er fuldført.
Hvert trin i en opgave kan udføres på forskellige tidspunkter af døgnet.
Når et trin er fuldført skal man sætte sine initialer i det tilsvarende felt - herefter skal makroen gerne selv sætte datostempel i feltet bag - et datostempelt der ikke ændrer sig
Jeg kan få makroen i denne tråd til virke, men det giver det samme datostempel hele vejen ned gennem rækkerne.
 


Besked fra: rassten
Posteringsdato: 13.Feb.2011 kl. 12:08
måske noget i stil med


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count <> 1 Then Exit Sub

    Userinput = Target.Value
        NewInput = Userinput & " " & Now
    Application.EnableEvents = False
        Target = NewInput
    Application.EnableEvents = True
   
End Sub



-------------
VH rassten

Arbejde excel 2010
Privat excel 2010


Besked fra: Jørgen
Posteringsdato: 15.Feb.2011 kl. 09:26
Jeg kæmper stadig!!
 
I vedlagte regneark vil jeg gerne have et datostempel, når status ændre sig til værdien i A5 = "afsluttet".
På ark 1 har jeg prøvet at lave en makro som jeg har stykket sammen af forskellige indput fra nær og fjern. Jeg er ikke sikker på at jeg selv ved hvad jeg har gang i !!!
 
På ark 2 har jeg forsøgt at få den til at køre Allans makro, når arket aktiveres, men uden held.
 
Det jeg allerhelst vil have, det er at der i kolonne B sættes en dato ud for den celle i kolonne A der ændres til "Afsluttet", og helst lige så snart cellen forlades. - Alternativt når arket åbnes
 
Er der en der vil gøre et forsøg?
 
/uploads/32/sæt_dato_ved_statusændring.xls - uploads/32/sæt_dato_ved_statusændring.xls
 
Jørgen


Besked fra: Allan
Posteringsdato: 15.Feb.2011 kl. 09:56

Hej Jørgen,

Jeg må med røde ører indrømme at jeg har skrevet forkert i den kode jeg postede til dig tidligere Embarrassed (Det er nu korrigeret mht. fremtidige læsere)
 
Prøv denne i stedet. /uploads/1/sæt_dato_ved_statusændring.xls - uploads/1/sæt_dato_ved_statusændring.xls
 
Når du ændrer status til 'Afsluttet' sættes datostempel, denne dato kan ikke ændres efterfølgende, så længe der står 'Afsluttet' i status.
Ændrer du status tilbage til 'Kørende' eller tom kan du slette datoen igen.
 
Prøv den lige af.
 
//Allan


Besked fra: Jørgen
Posteringsdato: 15.Feb.2011 kl. 11:45
Hej Allan
 
Tak for hjælpen - nu ser det ud til at virke - under forudsætning af at alle datoerne ikke ændre sig i morgen !!!Clap
 
Og så lige et spørgsmål.
Hvad er det der aktiverer makroen? Et eller andet sted må du jo fortælle den at den skal køre!
 
Jørgen
 


Besked fra: Allan
Posteringsdato: 15.Feb.2011 kl. 13:08
Hej Jørgen,
 
Det var godt det virkede nu.
Grunden til at makroen kan 'Mærke' at du ændrer en status, er en såkaldt event.
Inde i VBA-editoren ligger koden under arket 'Datostempel ved ændring'
 
Den ser i seneste version således ud:
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 2 Or Target.Row < 11 Then Exit Sub
FrysDato
End Sub
 
Sub'en 'FrysDato' startes når det sker en ændring i arket. (Kun i kolonne A og B og i række 11 og ned)
 
Disse events, kan også laves til at starte ved markering af bestemte celler, dobbleltklik, aktivering eller deaktivering af arket blot for at nævne nogle stykker.
 
//Allan
 



Print side | Luk vindue