0

私のシナリオは次のとおりです。

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つの非同期呼び出しで同期アクティビティをシミュレートするためのものです。

編集instrIFステートメントのポイントは、データをフェッチするのではなく、サーバーがデータを返すときにのみ変更を検出することです。データをフェッチするとき、セルは「ServerGettingData」と表示し、データが取得されると、別のことを表示します。それは私が検出しようとしている後者です。

4

1 に答える 1

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
于 2012-12-07T09:17:21.167 に答える