■フォームを開く
DoCmd.OpenForm "フォーム名"
■フォームを閉じる
DoCmd.Close acForm, "フォーム名"
※(フォーム名を Me.Name にすると自分自身を閉じる)
■フォームをダイアログ形式で開く
DoCmd.OpenForm "フォーム名", Windowmode:=acDialog
※ダイアログ形式で開くと、開かれたフォームが閉じられるまで、呼び出し側のVBAは進行しません。
■ウインドウの高さ、幅設定
InsideHeight = 数値
InsideWidth = 数値数値の単位はTwipです。1dot=15Twip
例)フォームの内側のサイズを横485dot、縦300dotにする。InsideHeight = 485 * 15
InsideWidth = 300 * 15フォームを開いた時に指定のサイズに変更する場合は、フォームのイベントプロパティの「開くとき」に記述する。また、合わせてDoCmd.Restore命令を使うとよい。
自分以外のフォームの大きさを変更する場合は、フォーム名.InsideHeight = のように記述する。
■最大化、最小化
DoCmd.Restore ' ウインドウ状態
DoCmd.Maximize ' 最大化状態
DoCmd.Minimize ' 最小化状態自分以外のフォームの状態を変更する場合は、直前にDoCmd.SelectObject命令を記述します。
(例)「A」という名前のフォームを最大化する。Aは既に開いている状態であること。
DoCmd.SelectObject acForm, "A"
DoCmd.Maximize
■一時的にフィルターをかけて、フォームを開く
DoCmd.OpenForm "フォーム名",,"[氏名] = '山田 一郎'"
第3パラメータにSQLを指定します。上記例では、ソースデータの氏名フィールドが山田一郎だけを抽出します。
■サブフォーム上のデータの並び替えを変える
Me!サブフォームコントロール名!Form.OrderBy = "[回数] DESC,[学籍]"
Me!サブフォームコントロール名!Form.OrderByOn = True上記例では、回数を降順、学籍を昇順で並び替え
■現在のフォーカスのあるコントロール名を取得
Dum = Screen.ActiveControl.Name
■テクニック1
通常フォーム描画が始まるのは、Loadイベントを抜けた後に行われます。Loadイベントに書いたプログラムが長くかかると画面に何も表示されない時間が長くなります。したがって、Loadイベント直後に次のコードを用いて強制的にフォームを描画させるテクニックを使いましょう。
DoCmd.SelectObject acForm, Me.Name
DoCmd.RepaintObject acForm, Me.Name
■テクニック2
通常、リアルタイムなデータの更新を画面に反映するために、Accessは処理と描画を平行して行います。少しでも処理を早くするために、描画の停止を利用できます。カーソルの移動など、画面のちらつきが気になる場合も利用できます。但しダイアログ形式のように最前面表示での場合は描画を停止できません。
Application.Echo False (描画停止) Echo False でも同じ
Application.Echo True (再描画) Echo True でも同じただし!この処理自体で画面が一度フラッシングします。使用しないほうがちらつかない場合もあるので要確認!
■テキストボックスのカーソル位置の制御
制御したいテキストボックスの「フォーカス取得時イベント」へ
Me![テキストボックス名称].SelStart = Me![テキストボックス名称].SelLength
■フォームデザインをWindowsXpスタイルへ変更
On Error Resume Next
Application.SetOption "Themed Form Controls", Trueアクセスの「ツール」⇒「オプション」⇒「フォームレポート」⇒「フォーム上のコントロールにWindowsのテーマを使用する」にチェックを入れた状態と同じにする。Access2003より古いバージョンではエラーになるため、「On Error Rrsume Next」を付けること。
■フォームの記述一覧
構文例 | 説明 |
Forms!フォーム名1 | 何れも同じ |
Forms![フォーム名1] | |
Forms("フォーム名" & "1") | |
me!フォーム名 | |
Forms!フォーム名1!サブフォームコントロール名!Text1.Value= | サブフォーム内のオブジェクト操作 |
Me!サブフォームコントロール名!Text1.Value= | |
Me!サブフォームコントロール名.Form.AllowEdits= | サブフォーム自体のプロパティ操作 |
Me.Parent.Text2.BackColor = | ペアレントフォーム内のオブジェクト操作 |
Call Me.Parent.プロシージャ名 | サブフォームから親フォームに記述されたプロシージャを実行する。 ※プロシージャはPublic宣言されていること。 |
Call Me.サブフォームコントロール名.Form.プロシージャ名 | 親フォームからサブフォームに記述されたプロシージャを実行する。 ※プロシージャはPublic宣言されていること。 |
■フォームのレコードソースをレコードクローンで使用する
Dim tb As Recordset
Set tb = Me.Recordset.Clone
■データシートビューの色を変える
Me.DatasheetBackColor = (背景色)
Me.DatasheetForeColor = (文字色)
■条件付書式をVBAで設定する例 (VBAだとフルカラーで指定できる)
「氏名」と「学籍」にそれぞれ「性別」に応じた条件付書式を設定する例
With Me.氏名.FormatConditions
.Delete
With .add(Type:=acExpression, Expression1:="[性別]='男'")
.BackColor = 15658463
.ForeColor = 5328427
.FontBold = True
End With
With .add(Type:=acExpression, Expression1:="[性別]='女'")
.BackColor = 14407409
.ForeColor = 4206731
.FontBold = True
End With
End With
With Me.学籍.FormatConditions
.Delete
With .add(Type:=acExpression, Expression1:="[性別]='男'")
.BackColor = 14342330
.ForeColor = 0
.FontBold = False
End With
With .add(Type:=acExpression, Expression1:="[性別]='女'")
.BackColor = 11906018
.ForeColor = 0
.FontBold = False
End With
End With
■カレントレコードを保存する
Me.Refresh
or
DoCmd.RunCommand acCmdSaveRecord
■レコード移動ボタンの制御例
Me!次ボタン.Enabled = (Me.CurrentRecord <> Me.Recordset.RecordCount)
Me!前ボタン.Enabled = (Me.CurrentRecord <> 1)
(※Me.CurrentRecordは、先頭からのレコード連番)