Access

Access クリックでフィールド全体を選択状態にする方法

Accessフォーカス

AccessではTABキー・ENTERキーによるフォーカス移動時のフィールドの状態を設定できますが、今回はマウスクリックによるフィールド選択時のフィールドの状態を制御したいと思います。

Accessのオプション設定でキー移動によるフィールド状態を変更する

まずはキー移動時のフィールド状態の変更方法を確認しましょう。

マウスクリックではなく、キー移動でフィールドの状態が変わればいい方はこの方法が一番手軽ですのでお試しください。

Accessのオプションから詳細設定を開きます。

「フィールド移動時の動作」で希望のフィールド状態を選びます。

以下はAccess2007のオプション設定画面です。バージョンによってUIが異なります。

Accessオプション

この場合、Access自体の設定を変更することになりますので複数のアプリケーションがある場合、すべてに適用されます。

特定のアプリケーションのみに適用することはできません。

フォーカスを取得した時にフィールドの状態を変更する方法

先の方法ではキー入力(ENTER,TAB)による移動のみが設定の対象となっており、マウスクリックによるフォーカス取得時には適用されません。

このため、マウスクリックでフィールドの状態を変更するためには少しだけコードを記述する必要があります。

使うプロパティ(メソッド)は、以下の通りです。

.setFocus コントロールにフォーカスを移動
.SelStart 文字列のスタート位置を取得または設定
.SelLength 文字列の長さを取得または設定

コードはクリックイベント(Clickイベント)に記述します。

フィールド全体を選択

文字列のスタート位置を0にし、選択長を文字列長にすることで文字列の全選択となります。

フォーカス取得時(GotFocus)イベントに記述する方法を紹介しているサイトもあるのですが、私の環境(Access 2007)では正しく動作しませんでした。

以下、うまくいかなかったサンプルコードです。

.SetFocus行にブレークポイントを置くと正しく動作するのですが、ブレークしない場合(通常はもちろんブレークしませんね)全選択されませんでした。

フィールドの先頭に移動

スタート位置も選択文字列数も0なのでテキストの先頭位置にフォーカスされます。

.SelLengthはあってもなくてもOKです。

フィールドの末尾に移動

スタート位置を文字列長にしているので、文字列の後ろにフォーカスされます。

ボタンクリックでクリップボードに文字列をセット

今回長い文字列の項目をボタンクリック(Copy用のボタンを作成)でクリップボードにコピーしたいというニーズがありました。

実装は簡単。

cmdコピーボタンのクリックイベントで、コピーしたい項目(サンプルではtxt備考)にフォーカスを移動してacCmdCopyを実行するだけです。

備考フィールドを全選択する必要はありません。

ABOUT ME
アズビーパートナーズ
アズビーパートナーズ
プログラマーと社内SEとしての経験を活かして、 情報システム部門のご相談を承ります。 得意な分野はAccessによる短納期開発、 BIツール(QlikSense/QlikView)の開発です。 現在はCMSを利用したホームページの作成にも力を入れています。