|
▼川崎 さん:
>下記のコードを通信で受け取った情報が変化した時に
>実行するプログラムの書き方を教えてもらえないでしょうか?
>ユーザー側で書き直した時は大丈夫なのですが、
>通信でセル内が変わったときは実行しないようです。
>よろしくお願いします。
>
>Dim Dt1 As Double, Dt2 As Double 'グローバルで宣言(ずっと保持するため)
> Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Address(False, False) = "C6" Then
> Dt2 = Target.Value '入力された値
> If Dt1 > 0 Then
> With Application
> .EnableEvents = False
> Target.Value = Dt2 - Dt1
> .EnableEvents = True
> End With
> End If
> '
> Dt1 = Dt2
> End If
> End Sub
▼川崎 さん 今晩は。
前のスレッドの質問の位置が急に変わったのでとまどっていますが
これは、続きの質問ですから、前の位置の方がいいと思います。
一応、前の質問での対策です。
「外部リンク」が「通信」ということばに変わっているのが微妙ですが。
>すみません、下記のりんさんに教えてもらったコードですが外部リンクで情報をかきなおした時、コードが実行されないのですが?どこを書き直せばよいのでしょうか?
>どなたかご教授お願い済ます。
>Dim Dt1 As Double, Dt2 As Double 'グローバルで宣言(ずっと保持するため)
> Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Address(False, False) = "C6" Then
> Dt2 = Target.Value '入力された値
> If Dt1 > 0 Then
> With Application
> .EnableEvents = False
> Target.Value = Dt2 - Dt1
> .EnableEvents = True
このイベント処理はリンクや関数の変化には対応しないと言うことだと思います。
たぶんC6にリンクを設定しているのだと思いますが、
この辺の細部までは分かりませんが、
対策としてはリンク元がBook2のSheet1のA1だとすると、
リンク元のSheet1シートモジュールに
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "A1" Then
Dt2 = Target.Value '入力された値
If Dt1 > 0 Then
With Application
.EnableEvents = False
Workbooks("book1").Sheets("Sheet1").Range("C6").Value = Dt2 - Dt1
.EnableEvents = True
End With
End If
'
Dt1 = Dt2
End If
End Sub
を貼り付ける方法があります。
リンク先に考えていたBookのシートモジュールは削除してください。
これはリンクの代わりにVBAで処理しています。
質問に対して見当違いかもしれないけど。
|
|