has*_*slo 21 excel vba excel-vba
有没有办法用Excel在VBA中捕获单元格?我不是指Worksheet_SelectionChange事件,因为如果多次单击该单元格,则不会多次触发.BeforeDoubleClick也没有解决我的问题,因为我不想要求用户双重点击那个.
我当前的解决方案确实适用于该SelectionChange事件,但似乎需要使用全局变量和其他次优编码实践.它似乎也容易出错.
dbb*_*dbb 20
显然,没有完美的答案.但是,如果您想允许用户
那么最简单的方法似乎是将焦点移离选定的单元格,以便单击它将触发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
Run Code Online (Sandbox Code Playgroud)
小智 7
为了捕获同一单元格上的重复单击,您需要将焦点移动到不同的单元格,这样每次单击时,实际上都是移动选择.
当您单击任何单元格时,下面的代码将选择屏幕上可见的左上角单元格.显然,它有一个缺陷,它不会在左上角的单元格上捕获点击,但是可以进行管理(例如,如果活动单元格是左上角,则选择右上角的单元格).
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114266 次 |
| 最近记录: |