So-net無料ブログ作成
検索選択

フォーム フォームの最大化・最小化・復元・移動 [フォーム]

 フォームウィンドウに関する操作についていろいろです。

 本題の前に、確認事項です。
 ACCESS2007以降、ACCESS内のウィンドウの表示のされ方の種類が1つ追加されました。

 デフォルトでは、上図のように、タブでウィンドウを切り替えるようになっています。
 この場合、1つのウィンドウがACCESSのウィンドウ内いっぱいに表示されるので、この記事の操作は適用されません。

 この記事の内容は、従来の複数のウィンドウが重なって表示される場合の操作になります。
 設定の変更方法は「複数ウィンドウの表示のされかた」を、参照してください。

続きを読む


VBA フォーカスを移動する [VBA]

 フォーカスは、現在操作対象となっているコントロールを示します。
 例えば、画面上にテキストボックスAと、テキストボックスBの、2つのテキストボックスが配置されているとします。
 テキストボックスAにフォーカスがある場合、キーボードから入力を行うと、その内容はテキストボックスAに入力されます。
 この時、テキストボックスBへ入力を行いたい場合は、フォーカスをテキストボックスBに移動させます。

 フォーカスを移動させるには、通常のユーザの操作では、目的のコントロールをマウスでクリックする、タブキーを押下する、などがあります。

 これをVBから行うには、SetFocusメソッドを使用します。
 テキストボックスA(txtA)にフォーカスを移動する場合は、

Me.txtA.SetFocus

 と、します。

 コントロールのメソッドなので、対象となるコントロールにSetFocusメソッドがある場合のみ使用可能です。
 入力系のコントロールであれば、テキストボックス(TextBox)、コンボボックス(ComboBox)、リストボックス(ListBox)、チェックボックス(CheckBox)などです。

 フォーカスを移動させようとしているコントロールが、フォーカスを受け取れない状態の場合は、エラーになります。
 Enabled(使用可能)プロパティがFalseの時などです。

続きを読む


VBA フォーム上でレコードを検索する [VBA]

 フォーム上にデータ一覧を表示させ、指定された文字を含むレコードを検索し、そのレコードへ移動する方法です。
 この方法を活用する場面があるかどうかは分かりませんが、フォームのRecordsetは(通常)DAOであって、DAOのメソッドが利用できる、と言うことを知っておくと、いろいろ応用が利くと思います。

 解説用のフォームです。

 連結フォームを帳票フォームで作成し、データの一覧を表示させています。
 フォームの上部分の「検索」テキストボックスに文字を入力し、「先頭から検索」ボタンをクリックすると、都道府県名にその文字を含むレコードに移動するようにします。

続きを読む


VBA DoCmd.FindRecordについて [VBA]

 DoCmd.FindRecordの記事を書こうと思って、サンプルプログラムを作っていたのですが、どうにもうまくいきません。
 私的には、DoCmd.FindRecordの利用は非推奨なので、パスして他の記事を書こうかと思いましたが、いちおういろいろやってみたので、そのことについて書いておこうと思います。

 純粋にDoCmd.FindRecordについて知りたい方、申し訳ありませんが、ここにご希望の内容はありません。ご了承下さい。
 同じような検索であれば、DAOのFindFirstを使うのが良いかと思います。

・構文
 DoCmd.FindRecord  FindWhat , Match , MatchCase , Search , SearchAsFormatted , OnlyCurrentField , FindFirst

・引数
 FindWhat 必須
 検索する数値・文字列を設定します。

 Match
 一致と判断する検索方法を、以下のacEntireクラスから指定します。

名前 説明
acAnywhere 0 FindWhatとフィールドの一部が一致した場合
acEntire 1 FindWhatとフィールド全体が一致した場合
acStart 2 FindWhatがフィールドの先頭から一部一致した場合

 デフォルトはacEntireです。

 MatchCase
 大文字と小文字を区別するかどうかを指定します。
 Trueなら区別します。デフォルトはFalse(区別しない)です。

 Search
 検索を行う方向を指定します。
 以下のAcSearchDirectionクラスから指定します。

名前 説明
acDown 1 カレントレコードより下のすべてのレコードを検索します。
acSearchAll 2 すべてのレコードを検索します。
acUp 3 カレントレコードより上のすべてのレコードを検索します。

 デフォルトはacSearchAllです。

 SearchAsFormatted
 書式化された形式で検索する場合にはTrue、データベースに保存されている形式で検索する場合はFalseを指定します。
 デフォルトはFalseです。

 OnlyCurrentField
 検索対象となるフィールドを指定します。
 以下のAcFindFieldクラスから指定します。

名前 説明
acAll 0 すべてのフィールドで検索します。
acCurrent -1 現在のフィールドだけで検索します。

 デフォルトはacCurrentです。

 FindFirst
 最初のレコードから検索を開始する場合は、Trueを指定します。
 カレントレコードを次のレコードから検索を開始する場合は、Falseを指定します。

続きを読む


VBA 画面の描画停止する・ステータスバーへのメッセージ表示 [VBA]

 VBAで処理を行っている間、処理の内容によっては、その影響が画面に反映する場合があります。
 VBAでやっていることを、画面上で見せたくない場合は、Application.Echoで画面の描画(書き換え)を停止することができます。

・構文
 Application.Echo EchoOn, bstrStatusBarText

EchoOn … 必須です。Trueなら描画ON、Falseなら描画OFFになります。
bstrStatusBarText … ステータスバーテキストに表示する文字列を指定します。

 以下に、例を示します。

Private Sub cmdEcho_Click()

    Application.Echo False, "処理中…"
'
'…処理…
'
    Application.Echo True
  
End Sub

続きを読む