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培训的来源。

本技巧(3378)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: