vba - excel vba关于单元格更改错误

标签 vba excel

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Range = Range("A1") Then
    If Range("A1").Value <> Range("A2").Value Then
        Range("C1").Value = Range("C1").Value + 1
        Range("A2").Value = Range("A1").Value
    End If
End If
End Sub

这就是代码但是当我复制粘贴一个偏移单元格时,比如说 2 列和 3 行
它在线产生运行时错误13类型不匹配
If Target.Range = Range("A1") Then

为什么?
我只是想让 vba 在每次单元格 A1 更改时做一些事情
A1本身的值是一个excel求和公式

最佳答案

您会收到类型不匹配错误,因为您尝试将范围(包含许多单元格)与单个单元格进行比较。如果你想每次都做某事单元格A1改变了,改用这个:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    On Error GoTo ErrHandler

    If Not Intersect(Target, Range("A1")) Is Nothing Then
        If Range("A1").Value <> Range("A2").Value Then
            Range("C1").Value = Range("C1").Value + 1
            Range("A2").Value = Range("A1").Value
        End If
    End If

ExitHere:
    Application.EnableEvents = True
    Exit Sub
ErrHandler:
    Resume ExitHere
End Sub

另请注意,我正在使用 Application.EnableEvents = False - 这是Worksheet_Change 的好习惯事件来使用它。每次更改事件处理程序代码中的任何单元格时,它都会阻止代码无限触发自身。

更新:

顺便说一句,the value of A1 itself is an excel sum formula - 您无法使用上述方法跟踪公式的变化。我在这个问题中详细介绍了如何做到这一点:Using Worksheet_Calculate event for tracking changes of formula

关于vba - excel vba关于单元格更改错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23011606/

相关文章:

python - 使用 Python 的 Pandas 进行电子表格操作的技巧

excel - ActiveX 组件无法创建对象 : 'TDApiOle80.TDConnection'

python - 如何使用 xlsxwriter (不使用 pandas)将一组列表写入 Excel?

html - Dreamweaver 中的 RegEx 查找/替换 - 将 HTML 粘贴为变量?

vba - ActiveSheet.UsedRange.Columns.Count - 8 是什么意思?

excel - VBA 代码打开不需要的浏览器窗口

VBA 代码中的 Excel 公式

vba - 将范围从 Excel 粘贴到 PowerPoint,同时保持格式设置

vba - 使用带有 ? 的字符串来自 Visual Basic 中的 Excel 单元格内容

vba - 如何按名称而不是按索引为 VBA 的自动筛选函数指定列?