View Single Post
  #3   Report Post  
Dave Peterson
 
Posts: n/a
Default

I'm even more confused.

This part of the code:

With Target
If .Column = 8 Then

Looks to see if the change was made in column 8 (aka H). If H is locked, then
this event won't do anything--since the user can't change stuff in column H.

But you say Column H is a pick list. (I'm not sure what you mean--I guessed
data|validation, but maybe not.)

But in any case, didn't the unprotecting the sheet/doing the work/reprotecting
the sheet work for you?





Pank Mehta wrote:

I have columns D,F G,I and H locked, as they get popoulated automatically. I
want to move from column C to column D automatically once data is entered
into column A, B and C (and hence unlocked). Column E is unlocked as data is
required. Column F and H are locked as these are automaticall populated once
column E is populated. Column H is a pick list and once a selection is made I
want the date and time to be populated in columns I and J automatically
(hence the VBA) and after an entry in the picklist in column H is selected I
want to be able to be positioned in the next row in column A.

I was led to believe that is one wants to automatically skip to columns one
has to lock/unlock cells and then protect the worksheet.

"Dave Peterson" wrote:

I'm confused about what happens in columns I and J.

Do you have all the cells locked (then the macro would not do much) or do you
have some of the cells locked (and some unlocked)? So writing to a cell would
cause an error and the code would pass to ws_exit and get out.

I'm not quite sure...

But maybe just unprotecting the worksheet, doing the writing, then reprotecting
the worksheet would be sufficient:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
On Error GoTo ws_exit
With Target
If .Column = 8 Then
Me.Unprotect
With .Offset(0, 1)
.Value = Date
.NumberFormat = "dd mmm yy"
End With
With .Offset(0, 2)
.Value = Now
.NumberFormat = "hh:mm AM/PM"
End With
End If
End With

ws_exit:
Application.EnableEvents = True
Me.Protect
End Sub

Pank Mehta wrote:

I have a workbook that contains 14 sheets. I have a sheet for each month
followed by 2 sheets for information.

Each Month sheet has the following column headings associated from columns
A through J:-

Owner; from date; number of days; to date, address, ID, month, input by;
date; time.

I have to input data in columns A, B, C E, H, I and J.

Columns A and H are pick lists.

The following VBA is present to allow automatic population of columns I and
J.
Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
On Error GoTo ws_exit
With Target
If .Column = 8 Then
With .Offset(0, 1)
.Value = Date
.NumberFormat = "dd mmm yy"
End With
With .Offset(0, 2)
.Value = Now
.NumberFormat = "hh:mm AM/PM"
End With
End If
End With

ws_exit:
Application.EnableEvents = True

End Sub

To allow tabbing to the next cell I have locked cells that don't require
input (i.e. Columns D, F, G, I and J). and then protected the sheet without
a password.

The problem I have is that once an item is picked up from the drop down to
populate column H, then only the date is populated.

If I unprotect the sheet and select an item from the drop down list in
column H then both the date and time are populated.

Is there any way that I can have columns I and J un-locked (to allow date
and time to be populated by the VBA) and when I tab from column H it
automatically takes me to the next row and in column A?

Any help would be most appreciated.


--

Dave Peterson


--

Dave Peterson