|
▼勉強中 さん:
こんばんは。
プロシジャー内で宣言したローカル変数は、
原則としてプロシジャーが実行されている間、値が保持されます。
プロシジャー終了後は開放されます。
よって、このままだとプロシジャー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イベントは
使えませんか?
|
|