• 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.

Excel, Datum in cel automatisch invullen

Status
Niet open voor verdere reacties.

bjack61

Gebruiker
Lid geworden
20 dec 2012
Berichten
44
Hallo, Ik zit al een tijdje te zoeken naar een oplossing. Heb een en ander kunnen vinden maar werkt niet gelijk ik het wil. Ik heb een tabel in excel waar ik een artikelnummer ingeef. Daarnaast geef ik de aantallen in die ik wil bestellen van dat artikel. Ik zou graag willen dat in de cel daarnaast automatisch de datum en huidige uur wordt ingevuld. Ja, dit lukt me met deze: =ALS(J5>0;NU();""). Maar wat is het probleem, ik zou graag hebben als de gebruiker de file afsluit, dat deze datum en uur wordt opgeslagen en hij deze niet meer kan aanpassen. Met mijn code gaat dit niet want als ik de file save en terug open staat er het huidige uur in.

Stel iemand plaatst een bestelling bij van een artikel dan moet dat weer de huidige datum geven en uur. Daarna ook weer automatisch opslaan na afsluiten. Ik had onderstaande ook gevonden, werkt goed maar deed niet wat ik wou:

'Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Worksheets("Blad1").Activate
' ActiveSheet.Range("A1").Select
'Dim iResponse As Integer
' iResponse% = MsgBox("Wilt u 'laatste update' automatisch wijzigen?", vbQuestion + vbYesNo, "Nieuwe update")
'If iResponse = vbYes Then
' Worksheets("Blad1").Range("A1").Value = Now
' Else
'End If

Ik heb meerdere tabbladen met bestelformulieren voor verschillende zones op mijn afdeling, dus dit zou moeten werken per tabblad apart.
Ik kan geen VBA schrijven maar begrijp het wel een beetje als ik het lees, alle, toch de simpele dingen. Bedankt alvast voor de hulp. Grt Jacky.
 

Bijlagen

In de module van Thisworkbook

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 If Target.Column = 10 And Target.Count = 1 Then Target.Offset(, 2) = Now
End Sub
 
Zo wordt de datum/tijd aangepast wanneer iemand iets verandert in cellen J5 tm J200 (plaats code achter thisworkbook)

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Not Intersect(Target, Range("J5:J200")) Is Nothing And Target.Count = 1 Then
    Target.Offset(, 2) = Now
  End If
End Sub

edit: Vena was me net voor:p
 
Laatst bewerkt:
VBA datum automatisch

Beste VenA en JVeer: Beide codes werken. Maar ik wil uiteraard de cellen met datum beveiligen, dus gebruikers mogen datum niet zelf kunnen aanpassen. Dit werkt nu niet krijg foutmelding dat macro niet werkt 'Fout 1004 tijdens uitvoering'.
Nog een vraag: waarom zijn jullie twee VBA codees iets anders? De JVeer, je hebt de range ook aangegeven, waarom? Bedankt alvast.
 
Ik heb nergens iets gelezen over een beveiliging. Zet de bestellingen gewoon in 1 tabel en regel de invoer met een Userform.
Het is ook maar een halve vraag. Wat als iemand het aantal op 0 zet of weer leeg maakt? Wat als jaap Klein ziek/vrij is? Wie plaatst dan de bestelling?
Een goed doordachte opzet maakt het allemaal een stuk eenvoudiger.
 
VBA datum automatisch

Ok, ik dacht dat de datum ook in een beveiligde cel zou verschijnen. Met formulieren heb ik nog niet gewerkt in excel. Wij hebben deze tool in access staan maar dit access wordt op ons bedrijf niet meer ondersteund. Kan ik dan alsnog iets toevoegen aan de code zodat de datum toch verschijnt bij een beveiligde cel? Merci alvast, en ja ik ga eens aan de slag met formulieren. In access kon ik dat wel.:)
 
Eerst alle cellen via celeigenschappen op unlocked(vinkje uitzetten bij beveiliging). Daarna de cellen in de kolom van de datum wel op geblokkeerd zet.

Vervolgens beveilig je de sheet met deze macro. De userinterfaceonly zorgt ervoor dat je macro blijft werken.

Code:
Sub Protect()
ActiveSheet.Protect "Wachtwoord", 1, 1, 1, UserInterfaceOnly:=True
End Sub

Nog een vraag: waarom zijn jullie twee VBA codees iets anders? De JVeer, je hebt de range ook aangegeven, waarom?

Dat is net wat je wil. De code van Vena werkt voor de gehele kolom, ook als je perongeluk de tabelkop aanpast. Dan zal de celkop van kolom L veranderen in een datum.
Als je een range opgeeft zal dat niet gebeuren.
 
Laatst bewerkt:
VBA datum automatisch

Beste JVeer,

Moet ik dan ook een wachtwoord invullen op de plaats "wachtwoord"?
Ik heb dit getest en krijg een compileerfout. Moet ik de code op het einde van de vorige plaatsen of apart in thisWorkbook.
 
Laatst bewerkt:
Nu is je wachtwoord daadwerkelijk "Wachtwoord".
Je kunt ook kiezen om geen wachtwoord te nemen. Dan haal je de tekst gewoon weg.

De macro om te beveiligen komt in een module en de change event komt achter thisworkbook.
Zie bestand.
 

Bijlagen

Laatst bewerkt:
VBA datum automatisch

Raar, heb het precies hetzelfde ingevuld en onderstaand gedeelte loopt fout, hetgene tussen de haakjes wordt geel:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Range("J5:J200")) Is Nothing And Target.Count = 1 Then
[ Target.Offset(, 2) = Now]
End If
End Sub

Wat vind je van dit alternatief, werkt wel.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ActiveSheet.Unprotect "wachtwoord"
If Not Intersect(Target, Range("J5:J18")) Is Nothing And Target.Count = 1 Then
Target.Offset(, 2) = Now

ActiveSheet.Protect "wachtwoord"
End If
End Sub

Ik heb dan ook geprobeerd om mijn vba te beveiligen voor gebruikers door bij "eigenschappen van VBA project een paswoord te zetten. Maar je komt er gewoon in, is niet beveiligd. Hoe komt dat?
 
Zo kan het ook. Waarom je je VBA niet kan beveiligen is apart...
 
VBA datum automatisch

Thanks voor de hulp. Nog een laatste vraag en dan sluit ik deze vraag af. Waar kan ik leren formulieren opmaken met tabellen en query's in excel, liefst een gratis cursus?


Grt Jacky
 
VBA datum automatisch

Hey Vba specialisten, eea uitgeprobeerd en onderstaande werkt wel perfect:

'Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
' If Target.Column = 10 And Target.Count = 1 Then Target.Offset(, 2) = Now
' ActiveSheet.Protect "wachtwoord", 1, 1, 1, UserInterfaceOnly:=True
'End Sub

Vraagje, hoe zetten jullie codes in het forum? Ik heb iets gelezen van haakjes.

Hoe sluit ik de vraag af, vind het niet echt.
 
Laatst bewerkt:
Codetags.

Je plaatst je code, selecteert het en drukt op # in geavanceerde modus (die ik standaard aan heb staan).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan