View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
K Dales[_2_] K Dales[_2_] is offline
external usenet poster
 
Posts: 1,163
Default CutCopyMode is never xlCut!?

On a "plain" worksheet (without your code) observe what happens:
I copy a value. The "marquee" appears around the cell, showing I have
copied it. I paste, and the marquee remains. I am in copy mode (still).
Now I cut a value. The marquee appears and now I am in Cut mode (but note:
I have not changed the worksheet yet!). I paste, and the marquee goes away -
now I have changed the sheet, but I am no longer in cut mode. So you can't
detect cut mode by the change to the sheet that takes place when you do the
paste.

I added a little workaround: I use a public variable and the
Worksheet_SelectionChange event to log which mode we are in when the cell is
selected (before the paste):

Public WhichMode as Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
WhichMode = Application.CutCopyMode
End Sub

Now just use WhichMode in your sub instead of Application.CutCopyMode (but
note - this now fires the change event twice when you cut and paste! (I
haven't figured out why)

--
- K Dales


"Joe HM" wrote:

Hello -

I have the following code in my Worksheet_Change() function. It was
actually taken from the Excel Help (2003/11.# SP1) ...

Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Target.Row 4 And (Target.Column = 3 Or Target.Column =
4)) Then
Select Case Application.CutCopyMode
Case Is = xlCopy
MsgBox "In Copy mode"
Case Is = xlCut
MsgBox "In Cut mode"

Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True

Application.CutCopyMode = False

Case Is = False
MsgBox "Not in Cut or Copy mode"
End Select
End if
End Sub

I am trying to only allow a cut/paste into certain cells. This works
fine for the copy/paste (xlCopy) but it is not working for the xlCut.
When I go to the Worksheet and do a Cut and then paste it somewhere
else, it tells me "Not in Cut or Copy mode".

Is there a bug in Excel or am I doing something wrong? As I said, it
works for the copy/paste.

Thanks!
Joe