Try more comprehensive solution in attached file 
Thanks to @xladept and @sintek for their suggestions - see this thread
ThisWorkbook module:
Private Sub Workbook_Open()
Call SetKey
Application.EnableEvents = True
End Sub
SheetModule:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
With Application
.EnableEvents = False
If OverLap(Selection.Cells(1, 1)) > 0 Then .CutCopyMode = False
.EnableEvents = True
End With
End Sub
General Module:
Option Explicit
Public r As Long, c As Long
Public MyCount As Integer, CCM As Boolean, Ants As Range
Public PR As Range, DV As Range
Sub c_Macro()
'
' c_Macro Macro
' Get selection Address
'
' Keyboard Shortcut: Ctrl+c
'
Selection.Copy
MarchingAnts
End Sub
Sub SetKey()
'If key is Uppercase use Ctrl+Shift+Key but always use Ctrl
Application.MacroOptions Macro:="c_Macro", ShortcutKey:="c"
End Sub
Sub MarchingAnts()
On Error Resume Next
CCM = Application.CutCopyMode
If CCM <> True Then MyCount = 0 Else MyCount = MyCount + 1
Select Case MyCount
Case Is = 0: Set Ants = Nothing
Case Is > 0: Set Ants = Selection
End Select
End Sub
Function OverLap(rng As Range) As Integer
On Error Resume Next
If MyCount = 0 Then Exit Function
r = Ants.Rows.Count: c = Ants.Columns.Count
Set PR = rng.Resize(r, c)
Set DV = rng.Parent.Cells.SpecialCells(xlCellTypeAllValidation)
OverLap = Intersect(PR, DV).Cells.Count
End Function
Bookmarks