• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

de formule =nu()

  • Onderwerp starter Onderwerp starter emc
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

emc

Gebruiker
Lid geworden
21 jan 2003
Berichten
450
Met hulp heb ik een standaard factuur gebouwd (zie bijlage). Ik heb echter nog 1 probleempje op te lossen. Voor de datum gebuik ik de formule =nu(). Wanneer ik het document via een visual basic toepassing opsla moet het opgralsagen bestand de datum onthouden en niet meer veranderen. Hoe kan dat?

Alvast bedankt, emc.
 
Ik heb zelf onlangs ook zoiets gemaakt.
In feite komt het erop neer dat je met VBA de formule nu kopieert--> plakken speciaal--> waarde. Dat ziet er zo uit:

Range("B2").Select
ActiveCell.FormulaR1C1 = "=NOW()"
Selection.Copy
Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B2").Select
Application.CutCopyMode = False
Selection.ClearContents
 
kan ik jouw tekst onder de al bestaande formule plakken?
 
Gebruik deze macro:
Sheets("Invoerblad").Select
Range("A7").Select
Selection.Copy
Sheets("Factuur").Select
Range("B21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

OMdat je wilt dat dit gebeurt bij opslaan zou je ervoor kunnen kiezen dit onder de knop opslaan te plakken.
 
Bedankt, ik ga er mee aan de slag, morgen meer!
 
Hoi emc,

Gebruik de gebeurtenis Before save.

Open de VBA-editor (Alt & F11) kies uit de verkenner ThisWorkbook.
Selecteer Workbook - BeforeSave uit de pulldownmenu's

En zet hier de code:
Sheets("Invoerblad").Range("A7")=Date
(Datum & tijd of alleen datum)

Met ipv A7 natuurlijk de verwijzing naar de cel waar jij de tijd wilt hebben. Kleine aanpassing naar aanleiding van oplossing van Pierre. Zijn oplossing is ook heel goed, tenzij de factuur onder de originele naam weggeschreven wordt (per ongeluk). Ik zou de If-statement niet gebruiken, gewoon altijd de datum neerzetten zodra het document geopend wordt.

Jeroen
 
Laatst bewerkt:
Zet dit in ThisWorkbook:

Private Sub Workbook_Open()
If Sheets("Invoerblad").Range("A7") = "" Then
Sheets("Invoerblad").Range("A7") = Date
End If
End Sub



Sla het bestand op.
Voortaan zal de datum in de factuur niet meer
veranderen.

Pierre
 
Heren, bedankt voor de reacties. Ik ben ermee aan het stoeien geweest en hier het resultaat:

De optie van Arjee werkt niet, omdat de werkblad factuur beveiligd is (en moet blijven).

De optie van Pierre geeft geen foutmeldingen, maar ik snap de toevoeging van jzeedijk niet, dus die heb ik er niet in verwerkt. Nou ben ik een leek in VB dus misschien kunnen jullie mij nogmaals een handje helpen.

ik doe hetvolgende:
Open de VBA-editor (Alt & F11) kies uit de verkenner ThisWorkbook.
Selecteer Workbook - BeforeSave uit de pulldownmenu's

Dan zie ik het scherm zoals in de bijlage weergegeven. Moet ik de tekst dan bij A of bij B kopieren?

Te kopieren tekst:

Private Sub Workbook_Open()
If Sheets("Invoerblad").Range("A7") = "" Then
Sheets("Invoerblad").Range("A7") = Date
End If
End Sub

JZeedijk, je geeft een aanvulling erop, maar die staat al in deze tekst, dus ik begrijp dat de kunst van het weglaten ook hier een schone is, maar kun je vertellen wat je precies bedoeld? Moet ik dan alleen kopieren:


Sheets("Invoerblad").Range("A7")=Date ?

En de toelichting over de celverwijzing snap ik niet precies, in het in te voeren blad is dit inderdaad A7, cellen in andere tabbladen (B21) verwijzen ernaar, in het voorbeeld bestand zit alleen het tabblad factuur erin, omdat het bestand anders te groot is, maar in het originele bestand heb ik 4 tabbladen die verwijzen naar het tabblad invoerveld.

Alvast bedankt voor jullie moeite, emc
 
hierbij de bijlage

hierbij de bijlage
 

Bijlagen

  • image2.jpg
    image2.jpg
    23,5 KB · Weergaven: 41
Hoi emc,

Mijn oplossing is eigenlijk gelijk aan die van jpvs, met minieme verschillen.

Private Sub Workbook_BeforeSave()
Sheets("Invoerblad").Range("A7") = Date
End Sub

Wat na Private Sub staat is een Event (gebeurtenis). De macro wordt automatisch uitgevoerd als de gebeurtenis plaatsvind. In het geval van jpvs, zodra het spreadsheet geopend wordt, in mijn geval voordat het spreadsheet opgeslagen wordt. In het geval van jpvs staat de datum in het sheet tijdens het maken van de factuur, in het geval van mij komt deze pas op die plek te staan als de factuur bewaard wordt. In het geval van Arjee kun je knoeien met de datum, in mijn geval wordt dat lastiger.

Wat wel een essentieel verschil is dat bij Arjee de datum niet wordt geplaatst als er al iets in A7 staat. Stel dat je de factuur al opgeslagen hebt en opnieuw opend dan blijft de originele datum in het sheet staan. Dat kan voordelen hebben, maar ook nadelen. Daar moet je over nadenken wat je wil.

Je kan ook beide doen, waarbij er in A7 de datum staat wanneer de factuur is aangemaakt en bijvoorbeeld in A8 de datum dat de factuur voor het laatst bewerkt is. Doe je het helemaal mooi dan zet je zelfs de naam van diegene erbij (Range("B8")=application.username).

Jeroen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan