小编Ale*_*der的帖子

Worksheet_Change事件中的目标范围不正确

我是Excel-VBA的新手,我正在尝试编写一小段代码,这些代码是由某人更改工作表中单元格的值而触发的.如果更改的单元格的值小于零,则应将其设置为零.代码如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
'Debug.Print Target.Address
 If Target.Column = 6 Then
  For Each Cell In Target.SpecialCells(xlCellTypeConstants, 3)
     If Cell.Value < 0 Then
        Cell.Value = 0
     End If
  Next
 End If
End Sub
Run Code Online (Sandbox Code Playgroud)

现在发生的是当我更改第6列中任何单元格的值时,包含小于零的数字的工作表中的每个单元格也会更改为零.

我认为为Worksheet_Change事件处理程序创建的"目标"对象只包含已更改的单元格/单元格,因此我的代码只会更改已修改并首先触发事件的单元格的值.

我试图通过使用Debug.Print输出对象的地址来帮助自己.它打印出工作表中每个单元格的地址,其值小于零,因此我假设处理程序运行了几次.

我实际上找到了问题本身的解决方法,但我的问题是:我如何使用Worksheet_Change事件失败,以及我将来可以做些什么来解决这些问题呢?

excel events vba worksheet excel-vba

5
推荐指数
1
解决办法
811
查看次数

标签 统计

events ×1

excel ×1

excel-vba ×1

vba ×1

worksheet ×1