有没有办法用Excel在VBA中捕获单元格?我不是指Worksheet_SelectionChange
事件,因为如果多次单击该单元格,则不会多次触发.BeforeDoubleClick
也没有解决我的问题,因为我不想要求用户双重点击那个.
我当前的解决方案确实适用于该SelectionChange
事件,但似乎需要使用全局变量和其他次优编码实践.它似乎也容易出错.
显然,没有完美的答案.但是,如果您想允许用户
选择某些细胞
允许他们改变那些细胞,并且
陷阱每次点击,甚至重复点击同一个单元格,
那么最简单的方法似乎是将焦点移离选定的单元格,以便单击它将触发Select事件.
一种选择是如上所述移动焦点,但这会阻止单元格编辑.另一种选择是将选择扩展一个单元格(左/右/上/下),因为这允许编辑原始单元格,但如果单独再次单击该单元格,则会触发Select事件.
如果您只想捕获单个单元格列的选择,则可以向右插入隐藏列,扩展选择以在用户单击时将隐藏单元格包括在右侧,这样就可以为您提供可编辑的单元格每次点击都会被困住.代码如下
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'prevent Select event triggering again when we extend the selection below Application.EnableEvents = False Target.Resize(1, 2).Select Application.EnableEvents = True End Sub
为了捕获同一单元格上的重复单击,您需要将焦点移动到不同的单元格,这样每次单击时,实际上都是移动选择.
当您单击任何单元格时,下面的代码将选择屏幕上可见的左上角单元格.显然,它有一个缺陷,它不会在左上角的单元格上捕获点击,但是可以进行管理(例如,如果活动单元格是左上角,则选择右上角的单元格).
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'put your code here to process the selection, then.. ActiveWindow.VisibleRange.Cells(1, 1).Select End Sub