24. april 2013 - 09:13Der er
24 kommentarer og 1 løsning
VBA function til "Last saved"
Hej Eksperter
Jeg har på nette fundet frem til en VBA funtion der i en celle i et regneark kan skrive dato + klokkeslæt for sidste gang filen er blevet gemt, hvis man i cellen skriver =Lastsaved():
Function LastSaved() As Date Application.Volatile LastSaved = ThisWorkbook.BuiltinDocumentProperties(12) End Function
Det virker fint, MEN visningen af datoen + tidspunktet bliver ikke opdateret automatisk. Det sker kun hvis man trykker F9 eller lukker filen og åbner den igen.
Er der nogen der kan hjælpe med at få funktionen til at vise den opdaterede dato + klokkeslæt af sig selv, med det samme man har tykket på "Gem" ?
Og min fil står til "Calculation Automatic" så jeg forstår det ikke rigtigt. Kan der være nogle andre ting der spiller ind? Jeg har placeret koden i et nyt modul, er det ikke korrekt?
Om det med True er ikke nogen god idé, for så kan jeg se at tidspunktet ændres automatisk når filen åbnes, så det står som om at man sidst har ændret filen på åbningstidspunktet.
Min fejl vidste ikke lige hvad Application.Volatile gjorde, at hjemmelavet funktioner blev automatisk beregnet :) Men holder stadig på det kunne løses sådan.
hmm, det virker ikke for mig IT-GuFFe..... Der sker ikke rigtig noget.
Jeg har indsat Privat sub'en i VBAProject(Personal.xlsb) i et nyt modul, mens Sub Calc() er indsat i den aktuelle workbooks VBAProject under samme modul som min Function LastSaved().
Jeg havde bildt mig selv ind at Privat sub betød at den skulle ligge i personal.xlbs. Men hvad er forskellen på en Sub og en Privat sub?
Der sker noget meget mystisk efter at jeg har indlagt dine koder: Når jeg gemmer filen og trykker på luk, så spørger den igen om den skal gemme. Hvis jeg siger JA, så lukkes filen, men den åbnes igen ligeefter og forbliver åben!! Jeg fatter ikke hvad der sker! Hvis man istedet gemmer filen og trykker luk og siger NEJ til at gemme, så lukkes filen korrekt.
Det er noget med at en Private Sub, skal "kaldes" fra det modul man er i, men en Sub kan kaldes fra andre moduler. (Om det har andet betydning, er jeg dog ikke helt sikker på :) og hvis der er noget forkert i mit indlæg, så hører jeg det gerne;)
Det er fordi timeren går igang når man gemmer... Det havde jeg ikke lige tænkt på.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim MyTime, MyStr MyTime = (FileDateTime(ActiveWorkbook.FullName)) MyStr = Format(MyTime, "dd/mm/yy hh:mm") Range("A1") = "Senest gemt: " & MyStr & " af " & Application.UserName End Sub
Skal den placeres i et modul? Jeg syntes nemlig ikke lige at der sker noget som helst når jeg gemmer..... Og er det en tilføjelse til IT-GuFFe's koder eller erstatter den dem alle?
IT-GuFFE efter at jeg har ændret koden ifølge #13, så er det som om at den automatiske opdatering af det viste klokkeslæt igen ikke virker..... Klokkeslættet bliver først opdateret hvis jeg trykker på F9 (og automatisk calculate er stadig slået til).
Store-Morten jeg har ikke noget der hedder Denn_Projetmappe. Men mon ikke det er ThisWorkbook hos mig? der sker intet når jeg gemmer..... i hvilket sheet bliver det indsat? Jeg har forsøgt at indsætte et nyt "Sheet1" som det første sheet i workbooken, men der sker ingenting!
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Worksheets(1).Range("A1") = "Senest gemt: " & Format(Now, "dd/mm/yy hh:mm:ss") End Sub
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.