Wendy的工作表中包含大量数据,主要数据在C3:P312范围内。她希望有一个宏,如果她单击此数据范围内的单元格,将在该单元格中添加一个“ x”。

Excel不会将任何事件识别为单元格上的“单击”。

可能最接近的事件是SelectionChange事件,每次更改单元格选择时都会触发该事件。然后,事件处理程序可以检查以确保单元格选择在C3:P312范围内,然后在单元格中放置“ x”(如果是)。以下事件处理程序将执行此操作:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rInt As Range     Dim rCell As Range

Set rInt = Intersect(Target, Range("C3:P312"))

If Not rInt Is Nothing Then         For Each rCell In rInt             rCell.Value = "x"

Next     End If     Set rInt = Nothing     Set rCell = Nothing End Sub

但是,这种方法存在一个问题:单击另一个单元格时,SelectionChange事件不仅会触发,而且如果您使用键盘从工作表中的一个单元格移动到另一个单元格,也会触发该事件。这意味着,如果您使用键盘在工作表上移动,则在转换的每个单元格中都会留下“ x”字符的结尾。

解决此问题的一种方法是更改​​触发单元格检查和更改的事件。尽管Excel没有“单击”事件,但存在“双击”事件。这意味着您可以更改双击的单元格,如下所示:

Private Sub Worksheet_BeforeDoubleClick( _             ByVal Target As Range, Cancel As Boolean)

Dim rInt As Range     Dim rCell As Range

Set rInt = Intersect(Target, Range("C3:P312"))

If Not rInt Is Nothing Then         For Each rCell In rInt             rCell.Value = "x"

Next     End If     Set rInt = Nothing     Set rCell = Nothing     Cancel = True End Sub

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11681)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

链接:/ excel-Putting_an_X_in_a_Clicked_Cell [将X放入点击的单元格中]。