Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 61
Default How to get worksheet change code to work on protected worksheet?

As an aside, I'm getting so much better at modifying code that I get
from the ng archives now. Long time coming since I'm just not a
natural at all this stuff <g! I was able to modify the code below
and it works great except when I protect the worksheet.

--------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE ADDED
TO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE
ADDED TO IT, make sure it's the same as above.
End If
End If

ErrHandler:
Application.EnableEvents = True
End Sub
--------------------------------

Is there any way to get have it work without leaving the sheet
unprotected? Thx! :oD

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default How to get worksheet change code to work on protected worksheet?

All the event code will work except for any attempt to change locked cells
on a protected sheet. Simply unprotect, change cells, and reprotect.

' if need to write to cells then
Me.Unprotect "abc"
' do stuff
Me.Protect "abc" ' record a macro for any non default arg's
' end if

Regards,
Peter T


"StargateFan" wrote in message
...
As an aside, I'm getting so much better at modifying code that I get
from the ng archives now. Long time coming since I'm just not a
natural at all this stuff <g! I was able to modify the code below
and it works great except when I protect the worksheet.

--------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE ADDED
TO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE
ADDED TO IT, make sure it's the same as above.
End If
End If

ErrHandler:
Application.EnableEvents = True
End Sub
--------------------------------

Is there any way to get have it work without leaving the sheet
unprotected? Thx! :oD



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,501
Default How to get worksheet change code to work on protected worksheet?

Hi,

To make the changes then fleetingly unprotect and then reprotect

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
ActiveSheet.Unprotect Password:="Mypass"
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE ADDEDTO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE ADDED TO
IT, make sure it's the same as above.
End If
ActiveSheet.Protect Password:="Mypass"
End If

ErrHandler:
Application.EnableEvents = True
End Sub

Mike

"StargateFan" wrote:

As an aside, I'm getting so much better at modifying code that I get
from the ng archives now. Long time coming since I'm just not a
natural at all this stuff <g! I was able to modify the code below
and it works great except when I protect the worksheet.

--------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE ADDED
TO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE
ADDED TO IT, make sure it's the same as above.
End If
End If

ErrHandler:
Application.EnableEvents = True
End Sub
--------------------------------

Is there any way to get have it work without leaving the sheet
unprotected? Thx! :oD


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 61
Default How to get worksheet change code to work on protected worksheet?

On Mon, 16 Feb 2009 06:10:24 -0800, Mike H
wrote:

Hi,

To make the changes then fleetingly unprotect and then reprotect

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
ActiveSheet.Unprotect Password:="Mypass"
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE ADDEDTO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE ADDED TO
IT, make sure it's the same as above.
End If
ActiveSheet.Protect Password:="Mypass"
End If

ErrHandler:
Application.EnableEvents = True
End Sub

Mike


Wow, Mike, that's awesome! I don't know why I'm always so amazed by
Excel, it excels at what it does ... <g

I left it without a password in this instance so that every time you
go to enter something or use one of the toolbar buttons, you don't
have to enter a password. So I just modified the above slightly to
this:
--------------------------------
'---------------------------------------------------------------------------
' This code here does allow cell entry without leaving sheet
unprotected.
'---------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
'ActiveSheet.Unprotect Password:="Put a password here if you need
one ..."
ActiveSheet.Unprotect ' unprotects sheet to make entry
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE
ADDEDTO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE
ADDED TO IT, make sure it's the same as above.
End If
' ActiveSheet.Protect Password:="Put a password here if you need one
...."
ActiveSheet.Protect ' re-protects sheet after entry
End If

ErrHandler:
Application.EnableEvents = True
End Sub
--------------------------------

Thanks! :oD

"StargateFan" wrote:

As an aside, I'm getting so much better at modifying code that I get
from the ng archives now. Long time coming since I'm just not a
natural at all this stuff <g! I was able to modify the code below
and it works great except when I protect the worksheet.

--------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE ADDED
TO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE
ADDED TO IT, make sure it's the same as above.
End If
End If

ErrHandler:
Application.EnableEvents = True
End Sub
--------------------------------

Is there any way to get have it work without leaving the sheet
unprotected? Thx! :oD



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 61
Default How to get worksheet change code to work on protected worksheet?

On Mon, 16 Feb 2009 09:22:26 -0500, StargateFan
wrote:

On Mon, 16 Feb 2009 06:10:24 -0800, Mike H
wrote:

Hi,

To make the changes then fleetingly unprotect and then reprotect

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
ActiveSheet.Unprotect Password:="Mypass"
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE ADDEDTO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE ADDED TO
IT, make sure it's the same as above.
End If
ActiveSheet.Protect Password:="Mypass"
End If

ErrHandler:
Application.EnableEvents = True
End Sub

Mike


Wow, Mike, that's awesome! I don't know why I'm always so amazed by
Excel, it excels at what it does ... <g

I left it without a password in this instance so that every time you
go to enter something or use one of the toolbar buttons, you don't
have to enter a password. So I just modified the above slightly to
this:
--------------------------------
'---------------------------------------------------------------------------
' This code here does allow cell entry without leaving sheet
unprotected.
'---------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
'ActiveSheet.Unprotect Password:="Put a password here if you need
one ..."
ActiveSheet.Unprotect ' unprotects sheet to make entry
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE
ADDEDTO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE
ADDED TO IT, make sure it's the same as above.
End If
' ActiveSheet.Protect Password:="Put a password here if you need one
..."
ActiveSheet.Protect ' re-protects sheet after entry
End If

ErrHandler:
Application.EnableEvents = True
End Sub
--------------------------------

Thanks! :oD


[snip]

Darn <sigh. I spoke too soon ...

Yes, the above allows code to be entered, but it takes away half the
functionality of the code below. I have to unprotect the sheet before
entering anything with the code below, but if I delete anything, the
affected cells get their contents wiped which the above doesn't do.
Not that it's going to happen often but it would be nice to have the
functionality of the code below re keeping the cells cleared with the
convenience of not having to unprotect/protect manually.

Is it possible, by any chance?

Thanks once again. :oD




================================================== =====

[snip]

Original:
--------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count 1 Then Exit Sub
On Error GoTo ErrHandler
If Target.Column = 3 Then ' COLUMN 3=COLUMN C
Application.EnableEvents = False
If Not IsEmpty(Target) Then
Cells(Target.Row, 2).Value = Now ' COLUMN THAT HAS DATE ADDED
TO IT
' Cells(Target.Row, 1).NumberFormat = 'yyyy.mm.dd.ddd., hh"h"mm'
Else
Cells(Target.Row, 2).ClearContents ' COLUMN THAT HAS DATE
ADDED TO IT, make sure it's the same as above.
End If
End If

ErrHandler:
Application.EnableEvents = True
End Sub
--------------------------------


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
I need a work around for a protected worksheet Richard Setting up and Configuration of Excel 1 December 22nd 07 10:28 PM
AutoFilter can't work after the worksheet is being protected!!! Jac Excel Programming 7 June 26th 07 04:36 PM
How to make TAB key work in a protected worksheet Sri Ram[_2_] Excel Programming 1 August 18th 06 07:10 AM
Can't Get Objects To Work In A Protected Worksheet OMMBoy Excel Worksheet Functions 2 May 27th 06 06:28 PM
Why doesn't spell check work on a protected worksheet? Creating Order Forms is Fun Excel Worksheet Functions 6 December 22nd 04 07:34 PM


All times are GMT +1. The time now is 01:07 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"