Excel 单独计算细胞变化

Excel 单独计算细胞变化,excel,counter,monitor,Excel,Counter,Monitor,我有个小问题。我编辑了一段代码来计算所选单元格的单元格更改,这些更改实际上非常有效。此代码进入工作表编码,而不是作为单个宏运行。 如何能够为不同的区域计数并行运行相同的代码,而不是另一个监视不同单元格的代码。 我尝试了double IF,如果是什么给了我一个错误,我在不同的sub下尝试了相同的代码 目前,代码监视C8单元的变化,并在D8中计数。 我需要为C16运行另一个计数器,并在D18中计数。 如果我需要用单独的计数器监控多个单元格,我该怎么做 Dim xCount As Intege

我有个小问题。我编辑了一段代码来计算所选单元格的单元格更改,这些更改实际上非常有效。此代码进入工作表编码,而不是作为单个宏运行。 如何能够为不同的区域计数并行运行相同的代码,而不是另一个监视不同单元格的代码。 我尝试了double IF,如果是什么给了我一个错误,我在不同的sub下尝试了相同的代码

目前,代码监视C8单元的变化,并在D8中计数。 我需要为C16运行另一个计数器,并在D18中计数。 如果我需要用单独的计数器监控多个单元格,我该怎么做

    Dim xCount As Integer

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xRg As Range, xCell As Range
    On Error Resume Next
    If Target = Range("C8") Then
        xCount = xCount + 1
        Range("D8").Value = xCount
    End If
    Application.EnableEvents = False
    Set xRg = Application.Intersect(Target.Dependents, Me.Range("C8"))
    If Not xRg Is Nothing Then
        xCount = xCount + 1
        Range("D8").Value = xCount
    End If
    Application.EnableEvents = True
End Sub

编辑:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim xRg As Range, xCell As Range, ranges, x As Long
    Dim deps As Range

    If Target.Count > 1 Then Exit Sub '<<<<<<<< added this...

    On Error GoTo haveError

    ranges = Array("C8", "C16")

    For x = 0 To UBound(ranges)

        Set xCell = Range(ranges(x))

        If Not Application.Intersect(Target, xCell) Is Nothing Then
            Application.EnableEvents = False
            xCell.Offset(0, 1).Value = xCell.Offset(0, 1).Value + 1
        End If

        Set deps = Nothing
        On Error Resume Next         'suspend error trapping
        Set deps = Target.Dependents
        On Error GoTo haveError      'resume trapping

        If Not deps Is Nothing Then
            Set xRg = Application.Intersect(Target.Dependents, xCell)
            If Not xRg Is Nothing Then
                Application.EnableEvents = False
                xCell.Offset(0, 1).Value = xCell.Offset(0, 1).Value + 1
            End If
        End If
    Next x

haveError:
    Application.EnableEvents = True

End Sub
Private子工作表\u更改(ByVal目标作为范围)
尺寸xRg作为范围,xCell作为范围,范围,x作为长度
变暗deps As范围

如果Target.Count>1,则退出Sub,这些“计数器”将保存在工作簿中,直到代码更改为止。这些计数器持续计数,并在代码更改时重置。工作簿本身保持计数器“位置”,请自己尝试。它不起作用。如果我改变了C8中的某些内容,D16也会计数。我只是链接了一张上传的关于工作表的图片。我的细胞基本上含有更多的“成分”。如果我更改了其中任何一个,我需要一个计数器来计算不同组的每个更改。那将是仓库的批量编码系统。您最初的帖子使用了一个全局变量来保持计数-这只在单个会话中有效,如果您重新打开工作簿,它将始终重置为零。这真的是你想要的行为吗?我不想在关闭和重新打开时重置它。我真正需要的是我发布的原始代码,但要在“同一时间”运行3个实例,但要观察不同单元格的变化。可能需要一个整数来监视“最后一个计数器”的位置?o、 OSee我的编辑-我在您的原始代码中留下了一行,删除全局/静态计数器会稍微简化代码。