当前位置:  开发笔记 > 后端 > 正文

在Excel VBA中单击OnClick

如何解决《在ExcelVBA中单击OnClick》经验,为你挑选了2个好方法。

有没有办法用Excel在VBA中捕获单元格?我不是指Worksheet_SelectionChange事件,因为如果多次单击该单元格,则不会多次触发.BeforeDoubleClick也没有解决我的问题,因为我不想要求用户双重点击那个.

我当前的解决方案确实适用于该SelectionChange事件,但似乎需要使用全局变量和其他次优编码实践.它似乎也容易出错.



1> dbb..:

显然,没有完美的答案.但是,如果您想允许用户

    选择某些细胞

    允许他们改变那些细胞,并且

    陷阱每次点击,甚至重复点击同一个单元格,

那么最简单的方法似乎是将焦点移离选定的单元格,以便单击它将触发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



2> 小智..:

为了捕获同一单元格上的重复单击,您需要将焦点移动到不同的单元格,这样每次单击时,实际上都是移动选择.

当您单击任何单元格时,下面的代码将选择屏幕上可见的左上角单元格.显然,它有一个缺陷,它不会在左上角的单元格上捕获点击,但是可以进行管理(例如,如果活动单元格是左上角,则选择右上角的单元格).

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

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有