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

Simpele vraag: datuminvoer automatiseren

Status
Niet open voor verdere reacties.

fun_surfer

Gebruiker
Lid geworden
25 aug 2001
Berichten
621
Om even door te breien op deze topic aangaande datumgebruik: kun je ook een aangepaste formule van '=nu()' gebruiken om automatisch de dag van invoer van een andere cel als waarde verkrijgen?
Als ik dus in bijv. A1 iets invoer dat in B1 automatisch de datum als waarde komt en niet verspringt?

GRTZ fun_surfer.
 
Rechtsklikken op de bladtab,
kiezen voor 'programmacode weergeven', en volgende code plakken:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$A:$A")) Is Nothing Then
Target.Offset(0, 1).Value = Date
End If
End Sub
 
Beste Luc, allereerst bedankt voor je rappe reactie! Verder ben ik een beetje huiverig om jouw toepassing te kopiëren, daar mij nog niets is gelukt met VBA of macro's... Mijn volgende vraag aan jou is dus of er ook een oplossing te vinden is die ik in een formule in kan passen?
Zo nee, zou je dan de code die je hebt gegeven willen uitleggen zodat ik kan proberen te begrijpen wat ik doe?

Alvast bedankt,

GRTZ fun_surfer.
 
Er is nog een andere oplossing... met formules. MAAR... Dan moet je wel een kringverwijzing in je werkblad zetten, én via Extra => Opties => tabblad berekening een vinkje zetten bij iteratie (Ik raad het af, omdat je dan geen verwittiging meer krijgt bij een kringverwijzing, en een kringverwijzing gewoonlijk op een fout wijst).
De juiste formule geef ik dus even niet.
Wat je wel kan doen, dat is een datum met de sneltoetsen in het juiste vak zetten:
Ctrl + ; (punt-komma).

Beste oplossing blijft de macro. Stap voor stap:

1- kopieer deze macro.
2- klik rechts op uw bladtab
3- kies voor 'programmacode weergeven'
4- Plak deze code in het grote venster dat je nu ziet.
5- sluit de VBA-editor terug door op het kruisje in de rechterbovenhoek te klikken.
6- KLAAR.

Luc
 
Hoi Fun_surfer,

Heb geen watervrees.

Excel is het peuterbadje, VBA het diepe. Na verloop van tijd gaat iedereen het diepe in (en niemand terug in het peuterbadje).

Jeroen
 
Hoi Jeroen,

Leuk uitgelegd!
Je hebt echter helemaal gelijk. VBA is zelfs leuk om toe te passen.

En je hoeft niet bang te zijn. Als beginnende VBA'er heb je nog niet de kennis om echt onherstelbare fouten te maken. En op het ogenblik dat je de kennis wel hebt, maak je die fouten niet meer.

Luc
 
Ik hem hem dan toch toegepast en nu werkt die lijst waarschijnlijk naar mijn zin, nog even afwachten... Maar echt weten wat ik heb gedaan doe ik niet, zou je mij willen uitleggen wàt ik nu laat doen met die macro?

GRTZ fun_surfer.

P.S.: Sorry dat ik nu pas reageer, ik moest gisteren even naar België voor mijn werk, het werd 20:30 en toen was ik te moe om nog te computeren... ;)

EDIT: Ik heb die datumwaarde in kolom F staan dus ik denk dat ik dat $A:$A moet veranderen in $F:$F?
 
Laatst bewerkt:
Inderdaad,$A:$A moet je veranderen in $F:$F

Gelukkig is de code niet zo groot, zodat het uitleggen wel zal gaan. Voor de duidelijkheid hier nog eens de macro:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$A:$A")) Is Nothing Then
Target.Offset(0, 1).Value = Date
End If
End Sub

Dit hier:

Private Sub Worksheet_Change(ByVal Target As Range)

Is een standaardcode voor Excel. Dit is één van de vele macro's die automatisch starten. De code zegt het als zelf: Treed in aktie als er iets in de Worksheet wijzigt.
Target slaat op de cel die gewijzigd wordt.
DIT is code die excel zelf reeds plaatst.

Deze code schrijf je dan weer zelf:

If Not Intersect(Target, Range("$A:$A")) Is Nothing Then

Target .... kennen we intussen (De cel die gewijzigd is)
Range("$A:$A") ........ Dit is de benaming voor de A kolom
Intersect ............. Geeft het gemeenschappelijke gebied aan tussen 2 of meer gebieden.

Intersect(Target, Range("$A:$A"))

Indien de gewijzigde cel zich dus in de A kolom bevind, dan is het gemeenschappelijke gebied de Target-cel.

Not Intersect(Target, Range("$A:$A")) Is Nothing

nu in het nederlands:

De gemeenschappelijke cel is NIET niets. Dus met andere woorden: er IS een gemeenschappelijke cel.

If ...... Then

Als er een gemeenschappelijke cel is dan...

Target.Value = Date

De waarde van de gewijzigde cel is de huidige datum!

Target.Offset(0, 1).Value = Date

Nu nog één stap verder: De gewijzigde cel, en dan ga je 0 rijen naar onder en 1 kolom naar rechts... en daar zet je de datum in.

Zo... dat was het ongeveer. Laat u niet ontmoedigen door de wat moeilijke uitleg. Indien je VBA stap voor stap leert, is het heel wat eenvoudiger.

Bezoek maar alvast mijn website. Daar staat voldoende VBA in.

http://users.skynet.be/onderland/Excel.htm#Lessen
 
Beste Luc, ik heb ongeveer een kwartier nagedacht over je uitleg, maar ik denk dat ik er nog een poosje over na moet denken... *LOL* Maar het vreemde is dat hij niet doet wat ik wil: ik heb de systeemtijd een dag verder gezet en de datum in het werkblad verandert mee. :( Wat kan ik verkeerd doen?
Verder heb ik je site bezocht maar ook dat is best nog teveel abacadabra voor mij, ik moet daar echt van het week-end eens voor gaan zitten en het één en ander downloaden en ontrafelen. Maar zoals jzeedijk al zei: "...na verloop van tijd gaat iedereen het diepe in..." en ik wil wel wat ervan proberen te leren!

GRTZ fun_surfer.
 
Tja, VBA is natuurlijk ook niet in één uurtje te leren. Dat maakt het natuurlijk op lange termijn ook leuk.

Toch moet mijn code lukken. Telkens je een cel in de A kolom (F kolom zo je wil) wijzigt, komt de datum in de cel ernaast. Als je natuurlijk de dag erna nog iets wijzigt in deze cel, dan wordt de datum wel overschreven.

Luc
 
Hoi Funsurfer,

Verander
If Not Intersect(Target, Range("$F:$F")) Is Nothing And isempty(Target.Offset(0,1)) Then

Oftewel zet de datum in kolom G als kolom G leeg is

Cursusje?!?
Quote: "....ik moest gisteren even naar België...."
Quote: Woonplaats: België
:D

Jeroen
 
Beste Luc en Jeroen, ik weet echt niet wat ik nu fout doe, maar ik kan denk ik het beste het zip-bestand als bijlage toevoegen zodat jou of jullie direct duidelijk wordt wat ik nu fout doe... De datum blijft op alle mogelijke manieren meeveranderen. :confused:

GRTZ fun_surfer.

P.S.: Jeroen, dat zou dan wel een bijzonder spoedige cursus zijn, zo'n vlotte leerling ben ik ook weer niet! Ik moet tegenwoordig heel veel voor mijn werk naar België, maar dan tegen de franse grens aan. Maar ik was dus niet bij Luc, wel een grappig toeval trouwens... ;)
 
Laatst bewerkt:
Heb je het bestand er vergeten bij te voegen? Of kijk ik er over?

En de franse grens is natuurlijk nog een heel eindje van mijn woonplaats vandaan. Ik woon dichter bij Nederland.
 
Nu dan?

Luc, ik woon zelf in de buurt van Rotterdam, dus dat is (met een klein beetje overdrijven) ook op een steenworp van België, maar waar ik nu iedere keer naartoe moet is qua rijuren toch wel verder dan wat dan ook in Nederland, al is het niet veel... Maar het is wel leuk, weer eens wat anders!
 
Laatst bewerkt:
Fun Surfer,

Je moet alle formules uit de F kolom verwijderen (Deze wordt nu gevuld met VBA).

En vermits het om een wijziging in de E kolom gaat (Niet de F kolom dus, moet je ook de code aanpassen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$E:$E")) Is Nothing Then
Target.Offset(0, 1).Value = Date
End If
End Sub

Luc
 
Beste Luc, je hebt gelijk, hij doet het nu inderdaad! Alleen nu komt alweer mijn vervolgvraag: als de DVD weer terug is wil ik via die pijl rechts van de actieve cel in kolom 'E' de waarde weer weghalen (moet ik nog verzinnen cq. navragen). Hoe krijg ik dan ook de datum weer weg? Normaal gesproken kan je zelf wel het één en ander vogelen maar daarvoor ontbreekt het mij nog aan kennis.
Ik heb wel een nieuwe 'If Not' aangemaakt met 'If Not Intersect(Target, Range("$E:$E")) Is Nothing Then Target.Offset(0, 1).Value = "" maar nu ik hierover nadenk is dit volslagen onzin, eerst zeg je: "zet neer en laat staan huidige datum" en daarna zeg je "haal waarde weg". Dit zal dus waarschijnlijk nooit werken...

Hardstikke bedankt!

GRTZ fun_surfer.
 
Ik ga nu slapen. Maar je zou alvast kunnen proberen om nog ergens een If-je in te bouwen.

If Target.Value ="" Then Exit Sub
 
Hey Luc, ik heb geprobeerd je zin zoals je hem hebt neergezet toe te passen en met een paar kleine aanpassingen, maar op geen enkele manier lukt het mij. Dit komt voornamelijk vanwege het feit dat ik niet weet wàt ik doe en belangrijker; wat ik móet doen.
Wat ik nu wel denk te begrijpen is dat VBA een formule vervangt en waar ik vanmorgen aan dacht: een cel is pas leeg als er noch een waarde noch een formule in staat. Dit was zeker ook de oorzaak dat VBA in eerste instantie niet werkte (op het feit na dat ik later de verkeerde kolom had aangegeven)?
Verder klopt de titel ook niet meer: zo simpel blijkt het toch niet te zijn! ;)
 
Fun Surfer,

Hier heb je de volledige code die je kan gebruiken:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$E:$E")) Is Nothing Then
If Target.Value <> "" Then
Target.Offset(0, 1).Value = Date
Else
Target.Offset(0, 1).Value = ""
End If
End If
End Sub

Mijn antwoord van gisteren was inderdaad niet erg duidelijk. Ook van die kolom met formules (F kolom) moet je je niet te veel aantrekken. Of er nu formules in staan, of waardes, dat zal de werking van deze macro totaal niet beïnvloeden. Heel simpel: zowel formules als waardes worden gewoon overschreven, en zijn dus ook nutteloos.

't Is enkel om uw werkblad geen nutteloze formules te geven dat ik ze zou verwijderen. Maar na verloop van tijd zullen ze dank zij die macro toch verdwenen zijn.

Luc
 
Beste Luc, hardstikke bedankt, hij werkt perfect! Wat ik hieruit meen te kunnen concluderen is dat macro's en formules toch enige overeenkomsten hebben, dit voornamelijk m.b.t. <>"" en "". Deze code begrijp ik, maar dan wel door je uitleg enkele replies eerder.

Nogmaals bedankt, ik heb gelijk nog een paar Excel-bestanden op de zaak die ik van deze macro kan voorzien. :thumb:

Groeten Aart.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan