[三流君(TOPへ)] / [VBAで楽しく] / [記事一覧] / [作者(三流君)に質問する]




三流君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つのコンボボックスを連動させて データを絞り込む

1.コンボボックスを2つ作る
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で情報を探す

せっかくホームページに来ていただいたのに、検索の紹介 ぉぃぉぃ
サイト指定や期間の指定を組み合わせて実行してみてください。

Google
探す言葉:
ググる。↑VBAなど 気になる単語や,オブジェクト(MailItem),プロパティ(.Body)やメソッド(.Move)などを入れて検索してみてください。

サイト指定:人気QAサイト や 一次情報MS本家を指定する
条件無し WWW 全体から検索も良いけど↓で絞り込むのもおススメです
一次情報・二次情報まとめから探る
一次情報は基本のMSDN含む microsoft.comから
まとめ一次・二次情報 Qiita 知識を記録・共有 qiita.comで個人まとめを参考に
手前味噌の三次情報 三流君メモBlog ken3memo.hatenablogから検索
QAサイトの質問から探る
QAはやっぱり人の多いYahoo知恵袋 chiebukuro.yahoo.co.jpから探る
こちらもどうぞ おしえてgoo! oshiete.goo.ne.jp
15分探して見つからなかったら?回答率90%以上 teratail.com
私も利用中 最近過疎ってる失礼 人力検索 q.hatena.ne.jp
意外と穴場? 2ch 5ch.netから探す
検索実行: ←オプション確認後に検索ボタンを押してください

期間指定:情報の鮮度も大切?
指定なし(全て)※不変の情報を得るには指定無しが一番?
3日以内 最新の更新情報を探す時など。
3ヶ月 これはあまり使わないかも
1年以内の更新なら情報鮮度もOK?バランス型
3年も経てばOfficeもバージョンUP?
検索実行: ←オプション確認後に検索ボタンを押してください

メッセージ送信

ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:


アドレス:に返事をもらいたい
感想や質問↓:


対応速度・緊急度:
(回答・感想は下記のようにしてHPで記事に載せてます) 例:[XXXXさんへ回答例]←みたいに回答していたり...
とても急ぎで連絡がほしい、そんな時は:[twitter三流君DM]に気軽に連絡してください。

[三流君(TOPへ)] / [VBAで楽しく] / [記事一覧]
カスタム検索