Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 126
Default Disable "Cut&Paste" and "Drag&Drop"

I want to disable this two function when I open a workbook. I've tryed both
this code:
Private Sub Workbook_Open()
Application.CellDragAndDrop = False
Application.CutCopyMode = False
End Sub

and

Private Sub WorkbookOpen(ByVal Wb As Workbook)
Application.CellDragAndDrop = False
Application.CutCopyMode = False
End Sub
but no one of them will work the right way. I've put it both in a module, in
"This workbook" and in the actuall sheet.
Anybody got an idea whats wrong?

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,073
Default Disable "Cut&Paste" and "Drag&Drop"

This works by disabling the Menu commands and keyboard shortcuts.
I got the idea from code posted by Jim Rech which disabled Cut, Copy
and Cell Drag and Drop.
I extended it to also disable Paste and Paste Special.
It works between different Excel sessions so that something copied in
a different session cannot be pasted in the protected session.
The three Subs are Private so that they can only be run from within
the VBA Editor.
To turn Cut, Copy, Cell Drag and Drop, Paste and Paste Special... off
run CutsOff().
Run CutsOn() to turn them all back on.

Private Sub CutsOff()
AllowCuts False
End Sub

Private Sub CutsOn()
AllowCuts True
End Sub

Private Sub AllowCuts(bEnable As Boolean)
Dim oCtls As CommandBarControls, oCtl As CommandBarControl
Set oCtls = CommandBars.FindControls(ID:=21) 'Cut
If Not oCtls Is Nothing Then
For Each oCtl In oCtls
oCtl.Enabled = bEnable
Next
End If
Set oCtls = CommandBars.FindControls(ID:=19) 'Copy
If Not oCtls Is Nothing Then
For Each oCtl In oCtls
oCtl.Enabled = bEnable
Next
End If
Set oCtls = CommandBars.FindControls(ID:=6002) 'Paste button
If Not oCtls Is Nothing Then
For Each oCtl In oCtls
oCtl.Enabled = bEnable
Next
End If
Set oCtls = CommandBars.FindControls(ID:=22) 'Paste in Edit menu
If Not oCtls Is Nothing Then
For Each oCtl In oCtls
oCtl.Enabled = bEnable
Next
End If
Set oCtls = CommandBars.FindControls(ID:=755) 'Paste Special...
If Not oCtls Is Nothing Then
For Each oCtl In oCtls
oCtl.Enabled = bEnable
Next
End If
''Disable Tools, Options so D&D cannot be restored
Set oCtls = CommandBars.FindControls(ID:=522)
If Not oCtls Is Nothing Then
For Each oCtl In oCtls
oCtl.Enabled = bEnable
Next
End If
With Application
.CellDragAndDrop = bEnable
If bEnable Then
.OnKey "^x"
.OnKey "+{Del}"
.OnKey "^c"
.OnKey "^v"
Else
.OnKey "^x", ""
.OnKey "+{Del}", ""
.OnKey "^c", ""
.OnKey "^v", ""
End If

End With
End Sub

Special thanks to Jim Rech.

Ken Johnson
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,069
Default Disable "Cut&Paste" and "Drag&Drop"

I htink you are disabling cut/copy/drag temporarily, but it is getting
re-enabled by subsequent operations. Instead of the Workbook_Open event, use
the Workbook_SheetSelectionChange event. Every time any cell is selected,
cut/copy/drag is disabled. This event code needs to be in the ThisWorkbook
module:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
Application.CutCopyMode = False
Application.CellDragAndDrop = False
End Sub

Hope this helps,

Hutch

"johnny" wrote:

I want to disable this two function when I open a workbook. I've tryed both
this code:
Private Sub Workbook_Open()
Application.CellDragAndDrop = False
Application.CutCopyMode = False
End Sub

and

Private Sub WorkbookOpen(ByVal Wb As Workbook)
Application.CellDragAndDrop = False
Application.CutCopyMode = False
End Sub
but no one of them will work the right way. I've put it both in a module, in
"This workbook" and in the actuall sheet.
Anybody got an idea whats wrong?

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 126
Default Disable "Cut&Paste" and "Drag&Drop"

This was exatly what I needed. Thank you Tom! It works perfectly.

Tom Hutchins skrev:

I htink you are disabling cut/copy/drag temporarily, but it is getting
re-enabled by subsequent operations. Instead of the Workbook_Open event, use
the Workbook_SheetSelectionChange event. Every time any cell is selected,
cut/copy/drag is disabled. This event code needs to be in the ThisWorkbook
module:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
Application.CutCopyMode = False
Application.CellDragAndDrop = False
End Sub

Hope this helps,

Hutch

"johnny" wrote:

I want to disable this two function when I open a workbook. I've tryed both
this code:
Private Sub Workbook_Open()
Application.CellDragAndDrop = False
Application.CutCopyMode = False
End Sub

and

Private Sub WorkbookOpen(ByVal Wb As Workbook)
Application.CellDragAndDrop = False
Application.CutCopyMode = False
End Sub
but no one of them will work the right way. I've put it both in a module, in
"This workbook" and in the actuall sheet.
Anybody got an idea whats wrong?

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
Shortcut to switch from "fill down" to "copy" with mouse drag RJ Dake Excel Discussion (Misc queries) 3 August 13th 09 05:35 PM
how can I disable "cutting cells" and "drag and drop "in excel ? mwoody Excel Worksheet Functions 4 August 25th 08 03:53 PM
Excel - Golf - how to display "-2" as "2 Under" or "4"as "+4" or "4 Over" in a calculation cell Steve Kay Excel Discussion (Misc queries) 2 August 8th 08 01:54 AM
Complex if test program possible? If "value" "value", paste "value" in another cell? jseabold Excel Discussion (Misc queries) 1 January 30th 06 10:01 PM
disable cell "drag and drop" for a cell/range meeting given condit Valeria Excel Programming 2 January 3rd 05 12:35 PM


All times are GMT +1. The time now is 12:22 PM.

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

About Us

"It's about Microsoft Excel"