私のシナリオは次のとおりです。
cell(1,1)の数式を使用してサーバーにクエリを実行するアドイン呼び出しがあります。サーバーは、cell(1,1)の値を変更して、応答を送り返します。私の関数はこれを検出し、cell(6,1)から始まる表示関数を呼び出して、サーバーによって現金に送信されたデータを貼り付けます。データは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ステートメントは、配列データがシートに貼り付けられているときに、2番目のIFステートメントで型の不一致が発生していたためです。ただし、同じ行でまだ型の不一致が発生しています。
これはすべて、2つの非同期呼び出しで同期アクティビティをシミュレートするためのものです。
編集instr
IFステートメントのポイントは、データをフェッチするのではなく、サーバーがデータを返すときにのみ変更を検出することです。データをフェッチするとき、セルは「ServerGettingData」と表示し、データが取得されると、別のことを表示します。それは私が検出しようとしている後者です。