![]() |
![]() |
フォーカス取得時にテキストボックスの先頭にカーソルをおくには? | フォーム、VBA |
![]() もちろんAccessメニューの[ツール]-[オプション]で表示されるオプションダイアログの[キーボード]タブにある[フィールド移動時の動作]を「フィールドの先頭に移動」にすることによって、テキスト全体ではなく先頭にカーソルが移動するようになりますが、この方法では常にそのようになってしまいます。 それには、対象となるテキストボックスコントロールの [SelStart]プロパティ や [SelLength]プロパティ を使用します。[SelStart]プロパティはテキストの選択範囲の先頭のカーソル位置を取得・設定します。一方、[SelLength]プロパティはテキストボックス上で範囲選択されている文字数を取得・設定します。今回の場合は、テキストボックスにフォーカスが移動したらその設定を行うようにしますので、[Enter/フォーカス取得時]イベントまたは[GotFocus/フォーカス取得後]イベントに次のようなコードを記述します。先頭にカーソルを移動すればよいので、カーソル位置を"0"(カーソル位置は先頭をゼロとしてカウントします)、選択文字数を"0"に設定します。 Private Sub テキスト0_GotFocus()
ここでは、実際にはフォーカスが移動したらまず一時的にテキスト全体が選択状態となりますので、選択文字数をゼロにするだけで必然的にカーソルが先頭に移動します。また、"SelStart = 0" とすることによっても選択状態が解除されますので、これも必然的にカーソルが先頭に移動します。ということは、結果的には[SelStart]プロパティか[SelLength]プロパティのいずれか一方の値をゼロにするだけでも同様の結果が得られることになります。'フォーカスを取得したら先頭にカーソルがくるようにする With Me!テキスト0 .SelStart = 0 .SelLength = 0 End With End Sub 参考までに、次のようなコードによってテキストボックスの内容全体を選択状態にすることができます。 With Me!テキスト0
.SetFocus .SelStart = 0 .SelLength = LenB(.Value) End With |
|||
|
Copyright © T'sWare All rights reserved | ![]() ![]() |