- 締切済み
WordVBA:テキストボックス1の更新検出
テキストボックス1(指定されたテキストボックス)が編集されたなら、 ある処理を行うマクロを書いているのですが、 編集者が編集が終わったらマクロボタンをクリックして実行するのではなく、 更新されたことを自動で判断してマクロを処理を実行させるにはどうしたらよりでしょうか。 イベント機能とかヘルプで見ているのですが、よくわかりません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- camputer
- ベストアンサー率64% (22/34)
今日は、No.2です。 あれ、「Word」VBAでしたね。。。^^; ↓で動作できると思います。 Public 変更前文字 Private Sub TextBox1_GotFocus() 変更前文字 = TextBox1.Text End Sub Private Sub TextBox1_LostFocus() If 変更前文字 <> TextBox1.Text Then MsgBox "変更検出! ( `__´)σ " & 変更前文字 & " → " & TextBox1.Text End Sub あともしリアルタイムに変更を検出してみる場合には、2つ目のテキストボックスも 用意してみて、(←TextBox1とTextBox2がある状態) VBAには↓のコードを追加してみてください。 Private Sub TextBox1_Change() TextBox2.Text = TextBox1.Text End Sub テキストボックス1の変更内容がそのままテキストボックス2に反映されると思います。 どうぞVBAの勉強頑張ってくださいb
- camputer
- ベストアンサー率64% (22/34)
今日は、↓みたいな感じでどうでしょう? Public 変更前文字 Private Sub TextBox1_GotFocus() 変更前文字 = TextBox1.Text End Sub Private Sub TextBox1_Change() Cells(1, 1) = TextBox1.Text End Sub Private Sub TextBox1_LostFocus() If 変更前文字 <> TextBox1.Text Then MsgBox "変更検出! ( `_´)σ " & 変更前文字 & " → " & TextBox1.Text End Sub ワークシート上のテキストボックスを想定して書いてみました。 テキストボックスを触り始めた時(TextBox1_GotFocus)の文字列と 触り終えた時(TextBox1_LostFocus)の文字列を比較してみて 「編集された」かどうか判断しています。 ちなみにテキストボックスの変更をリアルタイムに検出する事も出来ます。(TextBox1_Change) 文字が1文字でも変更される度にセルA1の文字が変わると思います。どうぞ試してみてください。 VBAどうぞ頑張ってくださいb
- DreamyCat
- ベストアンサー率56% (295/524)
ActiveXコントロールのTextboxを使うのでもよければ マウスで抜け出した時に検出できます。 Private Sub TextBox1_LostFocus() ここに処理を書けばいいです。 End Sub