投稿日 | : 2005/07/26(Tue) 10:09 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: マクロだけでフォーカス移動 |
前後の文章から、Microsoft Access 上の開発と仮定して回答します。
> テキストボックスへの入力が正しくなければ、
> そのテキストボックスにフォーカスを移動させたいのですが、
> マクロだけで、出来るでしょうか?
Accessの場合、「正しくなければ、フォーカスを移動させる」のではなく、
「正しくなければ、フォーカスを脱出できないようにする」のが一般的です。
たとえば、テキストボックスの[更新処理前]イベントを使って、
Private Sub TextBox1_BeforeUpdate(Cancel As Integer)
If IsDate(TextBox1.Value) = False Then
MsgBox "日付を入力してください", vbExclamation
Cancel = True
End If
End Sub
のように記述すると、日付を入力するまで、テキストボックスを脱出できなくなります。
(正しい日付を入力するか、Escキーを押して入力処理をキャンセルすれば、フォーカス移動可能)
# VB6でいうところの、Validateイベントに近い機能です。
上記機能を使うのではなく、やはり、フォーカス移動自体が必要な場合には、
「コントロールの移動」
の マクロ を使うか、または、
DoCmd.GoToControl "TextBox1"
あるいは、
TextBox1.SetFocus
のいずれかの VBA を使う事になります。
ただし、いずれのコードを使うにしても、そのコントロールがフォーカスを受け取れる状態に
なっていなければ、エラーが発生します。
このエラーを無視したい場合には、VBAでは、直前に「On Error Resume Next」ステートメントを
記述しておけば OK です。一方、マクロによる記述の場合は、同等機能が無い(?)ので、
マクロ条件式を使って、フォーカスが受け取れるかどうかの判定を行う必要があります。