我编写了一些代码,用于在用户双击目标单元格时对其进行操作。该代码适用于工作表上的大多数单元格。
但是工作表受到保护(只能访问未锁定的单元格),并且如果用户碰巧双击其中一个锁定的单元格,则代码将执行,就好像该单元格(在双击时恰好被选中)是被双击的单元格一样。
有人能想到一种方法来识别双击发生在锁定的单元格上吗?谢谢。
答案1
我今天遇到了一个非常类似的问题。经过一番搜索,我一无所获,所以我想出了自己的解决方案。基本思路是捕获屏幕上光标的当前位置,并找出哪个单元格与该位置重叠。
将其放入普通代码模块中:
Declare Function GetCursorPos Lib "user32" (pos As POINTAPI) As Long
Type POINTAPI
X As Long
Y As Long
End Type
然后在你的工作表中使用它:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim pos As POINTAPI
Dim RealTarget As Range
'Get the cursor position
GetCursorPos pos
'Get the range that overlaps cursor position
Set RealTarget = ActiveWindow.RangeFromPoint(pos.X, pos.Y)
If RealTarget.Locked Then
'Put your code for locked cells here.
'Cancel to avoid entering the currently selected unlocked cell.
Cancel = True
Else
'Put your code for unlocked cells here.
End If
End Sub