我的方案如下:
我有一个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”,一旦检索到数据,它就会显示其他内容。这是我试图发现的后者。
答案 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