View Single Post
  #12   Report Post  
Posted to microsoft.public.excel.programming
Norman Jones Norman Jones is offline
external usenet poster
 
Posts: 5,302
Default using Dirty Method

Hi Matt,

Try something like:

'=============
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim rng2 As Range
Dim res As Long
Dim oldVal As Variant
Dim newVal As Variant
Dim sAdd As String
Dim msg As String

msg = "You can't change Original Booked " & _
"to change the value of Cell "

If Target.Count 1 Then Exit Sub

Set rng = Intersect(Me.Range("C5:H7"), Target)
Set rng2 = Intersect(Me.Columns("A"), Target)

On Error GoTo XIT

With Application
.EnableEvents = False
.ScreenUpdating = False
End With

If Not rng Is Nothing Then
sAdd = ActiveCell.Address
newVal = Target.Formula
Application.Undo
oldVal = rng.Formula

With rng
If Not IsEmpty(.Value) And newVal < oldVal Then
res = MsgBox( _
Prompt:="Are you sure you want " & _
"to change the value of " & _
"Cell " & rng.Address(0, 0) & "?", _
Buttons:=vbYesNo)
If res = vbNo Then
.Formula = oldVal
Else
.Formula = newVal
End If
Else
.Formula = newVal
End If
End With
If Not res = vbNo Then Me.Range(sAdd).Activate

With Target
.Font.Bold = True
.Interior.ColorIndex = 3
End With
End If

If Not rng2 Is Nothing Then
With rng2
If LCase(.Offset(0, 1).Value) = "original booked" Then
Application.Undo

MsgBox Prompt:=msg & Target.Address(0, 0), _
Buttons:=vbCritical, _
Title:="Locked Field"
End If
End With
End If

XIT:
With Application
.EnableEvents = True
.ScreenUpdating = True
End With

End Sub
'<<=============

This assumes that the headings are in column B and the data is entered in
column A.

---
Regards,
Norman



"matt4003" wrote in
message ...

Anyone have any ideas, I am trying to close out my project today, and am
just stuck:-(

Norman,

This is great!! I am really learning a lot and it is perfect for my
project. Can I ask another question, because I think you will be able
to answer it without thinking:-)

I have four rows of input for each entry (typically there are 50-100
entries per FCST):
1. Potential Sales
2. Sales FCST
3. Shipping FCST
4. Original Booked

I would like a message box to appear (similar to the one in the earlier
code) that says you "Can't change Original Booked". This is because this
field is pre-populated and is for reference.

I would imagine the statement to be:

If range(same row, column B) = "Original Booked" Then
res = MsgBox( _
Prompt:="You can't change Original Booked" & _
"to change the value of " & _
"Cell " & rng.Address(0, 0) & "?", _
Buttons:=vbCancel)
If res = Cancel Then
Formula = oldVal
End If
End With

Any ideas??

Thanks,
Matt


--
matt4003
------------------------------------------------------------------------
matt4003's Profile:
http://www.excelforum.com/member.php...fo&userid=9635
View this thread: http://www.excelforum.com/showthread...hreadid=508707