三流君VBAでAccess UserForm/サブフォームを操作する
キレのよいサンプルが少ないですが、よろしくお願いします
百聞は一見に〜 動画で解説
入力後に値をチェックして、データを読み込んだり、入力をキャンセルしたり
テキストボックスに入力されたIDを使用してデータをDLookupで読み込んでみたり、
更新前処理で、Cancel=Trueにして、カーソルを戻してみたり
下記のような感じで、イロイロとやってみました※ノーカット30分、三流的なハマりを笑ってね
目次
0:00 〜 データの準備
04:30 〜? フォームの作成
09:00 〜 入力IDのチェック
12:55 〜 DLookup関数がNullを返す
15:40 〜 データ無しの時、再入力させたい
20:45 〜 蛇足で顧客名2をセット
25:20 〜 テストとまとめ、再度しつこく説明
※ソースと解説は [Access 更新前処理 _BeforeUpdate内でDLookup関数を使用] を見てください
2つのコンボボックスを連動させて データを絞り込む
↑全体の流れと ソースコードは [Accessで2つのコンボボックスを連動?させるには?] を見てください
よく使う メインフォームとサブフォーム
↓IDをつなげて、作成してみた
↑こんな感じで Accessのメインフォームとサブフォームを連結させて作ってみました
あとは、値を取得したり、レコードの移動のテスト↓を行ってみました
↑フォームの値は Me![フィールド名] レコードの数は、Me.Recordset.RecordCount
サブフォームの値は Me![サブフォーム名]![フィールド名] レコード数は Me![サブフォーム名].Form.Recordset.RecordCount
で取得できました
レコードの移動は、DoCmd.GoToRecord , , acNext で、簡単にレコード移動できました。
サブフォームは一回 Me![サブフォーム].SetFocus で フォーカスを当てるとDoCmd.GoToRecordでレコード移動できました
※開発全体の流れとソースコードは、[AccessサブフォームのデータをOutlook本文に転記する]を見て笑ってください
Access フォーム 関係
概要を見て、気になったタイトルをクリックして本文を見てください
[No.41 AccessのForm .Pictureプロパティで画像参照]
非連結のイメージコントロールを貼り、
.Picture = 画像ファイル名の文字列 で 画像を表示させました。
[No.62 Access フォームでパスワード入力(入力後*****表示)]
ユーザーID [ _______ ] パスワード [ _______ ]
なんて入力用のフォームで、
パスワードを入力すると[ ******** ]
と*を入力したい、そんな質問に解答してます
[No.65 Access Form TextBoxの.SelLength .SelStartプロパティ]
テキストボックスの入力文字列を選択状態にしたかったので、
.SelLength .SelStartプロパティを使用してみました。
[No.66 Access ユーザーマスターのチェックとメニュー切り替え]
ログイン画面を作成して、ユーザーによってメニュー表示を変えてみました。
[No.67 Access Formを隠す Me.Visible = False (Closeとの違い)]
フォームを非表示のまま残し、値を参照してます。
[No.69 Access コンボボックスを自動で開きたい]
コンボボックスのリスト▼をクリック時と同じ状態にしたかったので、
.Dropdown を使ってみました。
[No.89 Access 検索フォームで選択した番号を使用する その1]
番号検索用のウインドウを表示させ、データを選択、
該当データへ移動する、そんな感じの処理を、
DoCmd.GoToControl コントロール名
DoCmd.FindRecord LNG顧客番号 '選択された番号のレコードに移動
なんて感じで処理しました。
[No.90 Access Form OpenArg引数でセット位置を渡す]
DoCmd.OpenForm stDocName, , , stLinkCriteria, , , "顧客データ印刷/txtSTART"
とフォームを開く時にパラメータを渡し、渡されたほうでは、
Me.OpenArgsで受け取り、使ってます。
[No.91 Access ダイアログフォームって?何? acDialogとPublic変数を使用]
acDialogを指定してフォームをダイアログ状態で開き、
グローバル(Public)変数を使用して、値のやり取りを行い、共通選択処理をやってみました
[No.94 Access Form_Open Form_Loadイベントの発生順]
イベントの発生順を探ってみました
[No.95 Access カレンダーコントロールから日付選択]
カレンダーコントロールを貼り、選択してみました
あと、共通の選択フォーム作りにチャレンジしてみました
[No.96 Access コントロールソースを共通にする(細工する)]
フォームに違うタイプのコントロールを貼る。
が
テーブルの項目(コントロールソース)は同じにして遊んでみた話
※キーボード入力とマウス選択の併用の案です
[No.99 Access タブコントロールを探り表示データ切り替え]
タブコントロールを貼り、選択のテストをしてみました
[No.106 Access サブフォームで連結 重複を弾いてメインに表示]
テーブルから重複値をハジク方法で、InStrで探して追加しない方法
と
Select DISTINCT キーワードを使用して、
SQL文で重複結果を返さない方法の2つをテストしてみました。
[No.107 Access サブフォームの明細データを検索、メインを移動]
サブフォーム(子)のデータを DLookup で検索して、
親フォームの該当するデータに DoCmd.FindRecord で移動してます
[No.126 Access Like演算子でパターンマッチングしてみた]
データが複数存在するかDCount関数とLike演算子で判断してみました
[No.178 Access 検索後・リストボックスで選択 サブフォームを移動]
listボックスの.RowSource を書き換え データを絞り込み、
ダブルクリックのイベント _DblClick で選択処理を行いました
[ページ内のTOPへ戻る]
ページフッター
Googleで情報を探す
せっかくホームページに来ていただいたのに、検索の紹介 ぉぃぉぃ
サイト指定や期間の指定を組み合わせて実行してみてください。
メッセージ送信
ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。