VBA检查单元格是否有变化

时间:2012-12-07 09:12:24

标签: excel vba

我的方案如下:

我有一个addin调用,它使用cell(1,1)中的公式查询服务器。服务器发回一个响应,改变cell(1,1)的值。我的函数检测到这个,然后调用一个显示函数,从单元格(6,1)开始粘贴服务器发送到cashe的数据。数据可能是X行和Y列。

这就是我所拥有的:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    If Target.HasArray = False Then
        If Target = Sheets("My_Sheet").Cells(1, 1) Then
            If InStr(Target.Value, "ServerGettingData") = 0 Then
                Sheets("My_Sheet").Cells(6, 1).Formula = "=My_Display_Call(A1)"
                Sheets("My_Sheet").Cells(6, 1).Calculate
            End If
        End If
    End If

End Sub

第一个IF语句是因为当数组数据被粘贴到工作表中时,我在第二个IF语句中遇到类型不匹配。但是,我仍然在同一行上遇到类型不匹配。

这是用两个异步调用模拟同步活动的全部内容。

编辑instr IF语句的要点是仅在服务器返回数据时检测更改,而不是获取数据。在获取数据时,单元格显示“ServerGettingData”,一旦检索到数据,它就会显示其他内容。这是我试图发现的后者。

1 个答案:

答案 0 :(得分:1)

在工作表模块中添加以下内容:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Cells(1, 1)) Is Nothing Then

            If InStr(Target.Value, "ServerGettingData") = 0 Then
                Sheets("Cancelled").Cells(6, 1).Formula = "=My_Display_Call(A1)"
                Sheets("Cancelled").Cells(6, 1).Calculate
            End If

    End If

End Sub