View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Dave Peterson[_5_] Dave Peterson[_5_] is offline
external usenet poster
 
Posts: 1,758
Default Does Excel have a SheetBeforeChange Event?

You may be able to do what you want with worksheet_change.

If you keep track of what the change was, do an application.undo to revert to
before the change, then do what you want, and reapply the changes.

Something like:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim myFormula As String
Dim resp As Long

If Target.Cells.Count 1 Then Exit Sub
If Intersect(Target, Me.Range("a1")) Is Nothing Then Exit Sub

On Error GoTo errHandler:

myFormula = Target.Formula
With Application
.EnableEvents = False
.Undo
resp = MsgBox(Prompt:="did you really mean to change " _
& Target.Address(0, 0) & "?", Buttons:=vbYesNo)
If resp = vbNo Then
'do nothing
Else
Target.Formula = myFormula
End If
End With

errHandler:
Application.EnableEvents = True

End Sub



Fabricio wrote:

I'm looking for a workbook (or worksheet) event that gets triggered before
Excel changes the worksheet. The SheetChange event gets triggered after the
changes have been made to the worksheet--too late for me :)

I'm trying to mimic the response a user gets when she tries to modify a
single cell in an array formula. Excel replies with a message box "You
cannot change part of an array." and does not allow her to make changes.

Thanks in advance,
-Fabricio


--

Dave Peterson