Thread: PasteSpecial
View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default PasteSpecial

If the deactivate event is in the DataSheet code module, try this:

Private Sub Worksheet_Deactivate()
On Error Resume Next
Set sh = ActiveSheet
Application.EnableEvents = False
Application.ScreenUpdating = False
With Worksheets("datasheet")
.Unprotect
Worksheets("FormatSheet") _
.Range("entiresheet").Copy
.Activate
.Range("A1") _
.PasteSpecial Paste:=xlPasteFormats
.Range("A1").Select
.Protect
End With
sh.Activate
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

--
Regards,
Tom Ogilvy


"Vicar" wrote in message
...
I have a protected worksheet which users can enter data into the

unprotected
areas. To try to prevent these areas becoming corrupted by formats being
copied in from other worksheets, I have added the following deactivate

change
event to "datasheet" (tried at first to use a cell change event, but it
became too complex):

Private Sub Worksheet_Deactivate()
Dim mynewSheet As String

Application.EnableEvents = False
Application.ScreenUpdating = False
mynewSheet = ActiveSheet.Name

Worksheets("formatsheet").Activate 'very hidden copy of datasheet

formats
Application.Goto reference:="entiresheet"
Selection.Copy
Worksheets("datasheet").Activate
ActiveSheet.Unprotect
Range("a1").Select
Selection.PasteSpecial Paste:=xlPasteFormats
Range("a1").Select
ActiveSheet.Protect DrawingObjects:=True

Worksheets(mynewSheet).Activate

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

This works fine when datasheet is unprotected and without the
Activesheet.Unprotect/Protect statements, but the PasteSpecial fails when

the
sheet is protected and with these statements included as above. Can anyone
tell me why?