愚者の経験

「また今度」はほとんどこない

VBAから値を入れた場合にも更新系のイベントを起こす

VBAのコードからテキストボックス等に値を入れる場合、BeforeUpdateや
AfterUpdateイベントは発生しません。(正確に言うと[Value]プロパティに値を入れる、です。)
なのでそのイベントを利用している場合は代入後に各イベントを呼ぶ必要があります。

しかし、[Text]プロパティに代入するとこれらのイベントが通常通りに発生しますので便利です。
BeforeUpdateでCancelされるとエラー「2101」が発生します。
(プロパティの設定値として指定した値が正しくありません。)

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

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

Private Sub テキスト0_AfterUpdate()
    MsgBox "After"
End Sub

Private Sub テキスト0_BeforeUpdate(Cancel As Integer)
    MsgBox "before"
    'Cancel = True
End Sub

値を入れる側にチェックが要らなくなりますし、AfterUpdateをわざわざCallしなくても
いいので積極的に使いたいですね。
SetFocusしないと使えないのが面倒ではありますが。

広告

VBAから値を入れた場合にも更新系のイベントを起こす」への1件のフィードバック

  1. よっし 12月 1, 2018 12:41 pm

    こんにちは。
    textプロパティに入力するとだとなぜ
    なぜはっせいするのですか? valueプロパティだとなぜはっせいしないのでしょうか?
    よろしくお願いいたします。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。