- ベストアンサー
Access:フォームをクリック!該当レコードを開くには?
Aテーブルを参照している2つのフォームがあります。 Bフォームは、Aテーブルの全内容を表示し、 Cフォームは、特定の項目のみを表示します。 そこで!Cフォームで、詳細を見たいレコードをクリックすると、 Bフォームの該当レコード(全内容)が開かれるようにしたいのですが、 可能なのでしょうか。 VBAは初心者ですが頑張りますので、ぜひ教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
[コード].SetFocus これは「コード」のフィールドにマウスポイント置いてアクティブにします(つまり検索前にコードのフィールドをアクティブにします。) フィールド名は[]で指定します。 Me!は検索対象のPage(この場合,vbaの対象が開かれているフォームを指します。)を指定しています。 べつのフォームを検索するときはフォーム名を指定しなければいけません。 Excelなどでセルを選択すると太線でセルが表示されますが、そのセルにSetFocusがあるということです。 フォーカス(カメラの焦点のことをフォーカスといいます 焦点を絞る)を移す時にこのsetfocusを使います Accessのヘルプを表示してキーワードに「setfocusメソッド」といれて検索してください。 一度にVBAを覚えるのは無理ですが少しずつでも覚える姿勢があればはやくマスターできるでしょう。 私だって全部知っている訳ではなく、必要に迫られて作っているだけです。 Accessの参考書にはいろいろ載っていますが、私は、ほとんどビジュアルベーシックで覚えました。 ビジュアルベーッシックとAccessのVBAは共通部分がたくさんありますよ。
その他の回答 (2)
tihitです。 内容のうち先頭に「'」がついているものはいらない行ですから無視してください。
私が使っているAccessで作ったものです。 コード検索 Private Sub コード検索_Click() [コード].SetFocus Dim inp As String inp = InputBox("検索するコードを入力してください。コードがない場合は一覧表が表示されます。", "検索するコード入力") If inp = "" Then DoCmd.CancelEvent Else DoCmd.FindRecord inp If inp <> Me![コード] Then MsgBox "検索したコードはありませんでした。全レコードから検索してください。", 0 + 32, "入力確認" Me![コード検索].SetFocus Else DoCmd.openform "F01○○個別表示", wherecondition:="[コード]='" & Me![コード] & "'" DoCmd.Close acForm, "F00○○管理一覧" End If End If End Sub ------------------------------------------------------------------- 宛名検索 Private Sub 宛先検索_Click() Dim atesaki As String [宛名].SetFocus atesaki = InputBox("調べたい氏名の最初から幾つかの文字を入力") 'DoCmd.OpenForm "FS検索-○○宛名" DoCmd.openform "F00○○管理一覧" ' DoCmd.Close acForm, "F00○○管理一覧" If atesaki = "" Then DoCmd.CancelEvent Else DoCmd.FindRecord atesaki & "*" ' DoCmd.OpenForm "F01○○個別表示", wherecondition:="[宛名]='" & Me![宛名] & "'" End If End Sub お役に立ちますかな?
補足
自作のVBAを転載していただき、ありがとうございます。 めちゃくちゃ初心者なのもので、このVBAに分からない所が何点か あるので、教えてください。 (1)>[コード].SetFocus Q.[]はテーブルで作成したフィールドの名前をVBAで使うときに使用するのでしょうか? Q.SetFocusってどうゆうものなんですか?参考書に記載されていないのですが。。 (2)>If inp <> Me![コード] Then Q.Me! は何を指しているのですか? Meだけに自分? よろしくお願いします。
お礼
ご説明ありがとうございます。 マスターできるように頑張ります。