Dates

M

Ms. Beasley

I'm trying to do a worksheet that will autotmatically enter "today's date" in
a field but will not update when the spreadsheet is opened tomorrow. Can
anybody help me with this? Thanks!
 
G

Gord Dibben

To enter the date/time in column C whenever data is entered in column B

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ws_exit:
Application.EnableEvents = False
If Not Application.Intersect(Target, Columns("B:B")) Is Nothing Then
Target.Offset(0, 1).Value = Now()
End If
ws_exit:
Application.EnableEvents = True
End Sub

'For one cell use
'If Target.Address = "$B$3" Then

'For a range use
'If Not Application.Intersect(Range("A1:A10"), Target) Is Nothing Then

This is sheet event code. Right-click on the sheet tab and "View Code".

Copy/paste the above into that sheet module.

Adjust to suit or post back with some more specifics about where you want the
date entered.


Gord Dibben MS Excel MVP

On Tue, 6 Feb 2007 07:31:00 -0800, Ms. Beasley <Ms.
 
M

Ms. Beasley

What I've been asked to do is create a shared log sheet that will allow users
to click in a blank cell that will automatically populate today's date and
then lock the cell. Then tomorrow when it is opened it will still show the
date of yesterday's entry into the log sheet. I am not proficient at Excel
at all!!! Thanks so much!!
 
G

Gord Dibben

Ms Beasley

Many features are unavailable in Shared Workbooks.

See Help on "shared workbook" for a list.

Changing protection/locking/unlocking cell is one of these features not
available.

What you want to do can easily be done on a non-shared workbook using event
code.


Gord
 
M

Ms. Beasley

Can you walk me through that? Thanks!

Gord Dibben said:
Ms Beasley

Many features are unavailable in Shared Workbooks.

See Help on "shared workbook" for a list.

Changing protection/locking/unlocking cell is one of these features not
available.

What you want to do can easily be done on a non-shared workbook using event
code.


Gord
 
G

Gord Dibben

Through what?

The event code for a non-shared worksheet?

NOTE: will not work on a Shared Workbook as I said earlier.

1. Select column A and any other range you want unlocked.
2. Format>Cells>Protection> uncheck the "locked" box.
3. Widen column A to about 16 minimum.

Select the sheet tab and "View Code". Copy/paste this code into that sheet
module.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target _
As Range, Cancel As Boolean)
On Error GoTo enditall
Application.EnableEvents = False
If Target.Cells.Column = 1 Then
ActiveSheet.Unprotect Password:="justme"
For Each cell In Target
If cell.Value = "" Then
With cell
.Value = Now
.Locked = True
End With
End If
Next
Cancel = True
End If
enditall:
Application.EnableEvents = True
ActiveSheet.Protect Password:="justme"
End Sub

Double-click on any blank cell in column A and get the date/time entered and
cell locked so timestamp cannot be changed.

Does not affect protection on other unlocked cells.

"justme" can be any password you choose.

You will of course want to lock the code from prying eyes so..........

Alt + F11 to open Visual Basic Editor.

Select your workbook/project and right-click>VBAProject
Properties>Protection>Lock for Viewing. Apply a password and save/close the
workbook.

When re-opened, code will be unviewable or uneditable.


Gord
 
M

Ms. Beasley

If I want to add column 8 to do the same thing, where can I put it in the
above formula? Thanks again!!!
 
G

Gord Dibben

Change If Target.Cells.Column = 1 Then

to

If Target.Cells.Column = 1 Or Target.Cells.Column = 8 Then

BTW.........this is not a "formula" but lines of VBA code, more commonly

referred to as a "macro" or "routine"

In this case the code is "event code" which runs when some event takes place.


Gord
 
M

Ms. Beasley

This worked and now they are asking me more questions. Stay tuned......
Thanks so much for all of your help!!
 
M

Ms. Beasley

Here is the next thing they want me to do. Column 9 is an
"approved/rejected" field. When it is populated how can I get column 10 to
populate with a date that can't altered? Once again, I really appreciate
your help!!!
 
G

Gord Dibben

With a different type of event code.

Make sure Column 9(I) is unlocked as were A and H columns unlocked for data
entry.

Then copy/paste this to the sheet module. See it is change event code, not
double-click. Requires entering something into the cell.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo enditall
Application.EnableEvents = False
If Target.Cells.Column = 9 Then
ActiveSheet.Unprotect Password:="justme"
For Each cell In Target
If cell.Value <> "" Then
With cell.Offset(0, 1)
.Value = Now
.Locked = True
End With
End If
Next
End If
enditall:
Application.EnableEvents = True
ActiveSheet.Protect Password:="justme"
End Sub

NOTE: multiple types of event code can go into one module as long as no two are
the same type of event.


Gord


Here is the next thing they want me to do. Column 9 is an
"approved/rejected" field. When it is populated how can I get column 10 to
populate with a date that can't altered? Once again, I really appreciate
your help!!!

<snipped for brevity>
 
M

Ms. Beasley

That worked great. If I want to do the same thing to columns F, I and L can
I use the "or" and copy and this statement "Application.Intersect(Target,
Columns("B:B"))"? Thanks so much!!
 
G

Gord Dibben

Try this one.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ws_exit:
If Intersect(Range(Target(1).Address), _
Range("B:B, F:F, I:I, L:L")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target.Offset(0, 1).Value = Now()
ws_exit:
Application.EnableEvents = True
End Sub


Gord
 
G

Gord Dibben

This version may be better.

Checks for blank cells.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ws_exit:
If Intersect(Range(Target(1).Address), _
Range("B:B, F:F, I:I, L:L")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Value <> "" Then
Target.Offset(0, 1).Value = Now()
End If
ws_exit:
Application.EnableEvents = True
End Sub


Gord
 
J

Josh

I have a similar request but wanted the code to work on the entire column. I
used the code you suggested and it put a date stamp on the first cell I
entered data into but then stopped after that. I need it to be able to do it
for the entire column so if I enter data in cell E4 for example, i need a
stamp at F4 and then data into E5, i need a stamp at F5. Thanks.
 
G

Gord Dibben

Change Column = 9 to Column = 5 in the code below and it should be good to go
for all of Column E

Just make sure columns E and F are unlocked before you Protect the worksheet.


Gord
 
J

Josh

I did that before I made the previous post and it would only post the date by
the first cell I entered data into. After that, there would be no dates
posted automatically.
 
D

Dave Peterson

Maybe it's time to share the code you're using.
I did that before I made the previous post and it would only post the date by
the first cell I entered data into. After that, there would be no dates
posted automatically.
 
Top