|
▼ichinose さん:
こんばんは。
おかげさまで意とする動作が確認できました。
ありがとうございます。
プロシージャの中ではなく外で宣言するのですね。
今後ともご指導をお願いします。
>こんばんは。
>プロシジャー内で宣言したローカル変数は、
>
>原則としてプロシジャーが実行されている間、値が保持されます。
>
>プロシジャー終了後は開放されます。
>
>よって、このままだとプロシジャーAでdtBfr1にデータをセットしても
>
>プロシジャーBで参照しているdtBfr1とは別物です。
>
>
>Private dtBfr1 As String
>
>>Sub A()
> Dim dtBfr1 As String '←この行は、削除
>> Range("z5").Select
>> dtBfr1 = ActiveCell.Value ←dtBfr1は更新前のデータです。
>> ActiveWorkbook.RefreshAll ←ここでデータ更新します。(外部データ)
>> Application.OnTime Now + TimeValue("00:00:20"), "B" ←「Sub Bを呼びま す」
>>End Sub
>>
>>
>>Sub B()
>> Dim dtAftr1 As String
>> Range("z5").Select
>> dtAftr1 = ActiveCell.Value ←dtAftr1は更新後のデータです。
>> If dtBfr1 <> dtAftr1 Then ←データが変更されている場合は変更後の データを音声で読みあげたいのですが、 ここでdtBfr1の値が「empty」となってし まいます。
>> Application.Speech.Speak (dtAftr1)
>> End If
>>End Sub
>
>としてみてください。
>
>確認していませんが、この仕様だとシートのChangeイベントは
>使えませんか?
|
|