1つだけ過去を変えられるとしたら?

アクセスのフォームに
テキストボックスとコマンドボタンを置きました。

VBAでoutlookに参照設定をして、

Private Sub コマンド2_Click()
Dim myNaSp As NameSpace
Set myNaSp = GetNamespace("MAPI")

Me.テキスト0.Value = myNaSp.PickFolder
Set myNaSp = Nothing
End Sub

としました。

テキストボックスには、
Private Sub テキスト0_AfterUpdate()
MsgBox Me.テキスト0.Value
End Sub
としました。

しかしoutlookのフォルダ名をPickFolderでテキストボックスに入れても
テキストボックスの更新後処理のイベントは発動しません。
しかしテキストボックスにはちゃんとフォルダ名が入っています。

Private Sub テキスト0_Change()
MsgBox Me.テキスト0.Value
End Sub

にしても同じです。

Private Sub コマンド2_Click()
Me.テキスト0.Value = "aaa"
End Sub

にしてコマンドボタンをクリックすると、
Private Sub テキスト0_Change()
MsgBox Me.テキスト0.Value
End Sub
は、発動します。

PickFolderでフォルダ名を選択して値をテキストボックスに入れても
イベントを発動させる方法を教えてください。

「PickFolder アウトルックとアク」の質問画像

A 回答 (2件)

TextBox.AfterUpdate イベント のヘルプより


----------------------------------
"SetValue/値の代入" アクションが記述されたマクロまたは Visual Basic で、コントロールに含まれるデータを変更した場合は、このイベントは発生しません。別のレコードに移動したり、レコードを保存したときに、フォーム に対して AfterUpdate イベントが発生します。

ということですから、AfterUpdate イベント は発生しません。

自前で呼んであげましょう。

Private Sub コマンド2_Click()
Dim myNaSp As NameSpace
Set myNaSp = GetNamespace("MAPI")

Me.テキスト0.Value = myNaSp.PickFolder
Set myNaSp = Nothing

Call テキスト0_AfterUpdate() '←この行を追加

End Sub
    • good
    • 0
この回答へのお礼

イベントをCallで呼び出すこともできるのですか。
知りませんでした。
おかげさまでうまく出来ました。ご回答ありがとうございました。

お礼日時:2012/11/05 22:45

別な方法になりますが、



Me.テキスト0.Value = myNaSp.PickFolder

Me.テキスト0.SetFocus
Me.テキスト0.Text = myNaSp.PickFolder

とすると Change / BeforeUpdate / AfterUpdate が発生すると思いますが、
どうなりますか。


なお、

> Private Sub コマンド2_Click()
> Me.テキスト0.Value = "aaa"
> End Sub
>
> にしてコマンドボタンをクリックすると、
> Private Sub テキスト0_Change()
> MsgBox Me.テキスト0.Value
> End Sub
> は、発動します。

をもう一度確認願えませんか。発動しなかったような気がします。
    • good
    • 0
この回答へのお礼

Me.テキスト0.SetFocus
すれば、
Call テキスト0_AfterUpdate()
がなくてもできました。

Private Sub コマンド2_Click()
Me.テキスト0.Value = "aaa"
End Sub
は、発動しませんでした。
何か勘違いしてました。

お礼日時:2012/11/05 22:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報