![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
サブフォームに変数を代入し、RecordSourceの値を取得したいのですがうまくいきません。
Sub test1()
Dim サブフォーム As String
Dim フォーム As String
フォーム= "土台"
サブフォーム = "フォーム1"
MsgBox Form_フォーム1.RecordSource
End Sub
*******************************************************************
Sub test2()
Dim サブフォーム As String
Dim フォーム As String
フォーム= "土台"
サブフォーム = "フォーム1"
MsgBox Form_フォーム1.RecordSource
MsgBox Forms(フォーム).Controls(サブフォーム).RecordSource
End Sub
オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)
*******************************************************************
Sub test3()
Dim サブフォーム As String
Dim フォーム As String
フォーム = "土台"
サブフォーム = "フォーム1"
MsgBox Forms(サブフォーム).RecordSource
End Sub
実行時エラー'2450'
マクロの式またはVisual Basic コート゛で参照されている 'フォーム名'フォームが見つかりません。
*******************************************************************
test1~3のうち
test1のみはうまくいくのですが
変数を代入したいです。
ヘルフ゜のには
Forms![受注]![受注サブフォーム].Formとなってますが
これじゃ変数を代入できないですよね。
どうすればサブフォームに変数を代入しつつ、RecordSourceの値を取得できるのでしょうか?
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
No.1です。
> この「.Form」はどこにつければいいのでしょうか?
えーと・・・すみません、後半に余計な説明が多すぎたようです(汗)
一応、前回回答の前半部分に書いていたんですが、式としては
MsgBox Forms(フォーム).Controls(サブフォーム).Form.RecordSource
になります。
蛇足ついでに、式の構成を簡単に(?)説明すると、
Forms(~)
展開済のフォーム群(=複数形:Formsコレクション)から、指定された
名前のフォームを参照
Controls(~)
そのフォーム内のコントロール群(=複数形:Controlsコレクション)から、
指定された名前のコントロールを参照
Form.RecordSource
指定したコントロール(サブフォーム)の、フォームとしてのプロパティ
(ここではRecordSource)を参照
(「Form」プロパティを経由しないと、サブフォームの「RecordSource」
プロパティを参照できない、ということ)
ということです。
※「Forms」と「Form」は英単語上は前者が後者の複数形という関係ですが、
プログラム上での関連性は薄いので、前者が前側につき、後者が後ろ側
につくのは、「コレクションやプロパティの使い方・定義がそうなって
いるから」として割り切るしかないかと思います(汗)
・・・また余計な説明が長くなりすぎた気がしますが(汗)、参考まで。
すいません。
読みこぼしていました。
試してみたらうまくいきました。
豆知識も大変参考になりました。
また何かあったらよろしくお願いします。
No.1
- 回答日時:
変数名に全角文字を使用することの是非は、この際おいておくとして・・・(汗)
【サブフォームのRecordSourceをMsgBoxに表示する場合の式】
MsgBox Forms(フォーム).Controls(サブフォーム).Form.RecordSource
※蛇足かもしれませんが、サブフォームの、
「コントロールとしての名前」(プロパティシートの「その他」タブの「名前」)と
「表示に使用しているフォームの名前」(同「データ」タブの「ソースオブジェクト」)
が違っている場合は、注意が必要です。
(「サブフォーム」に入れるのは「コントロールとしての名前」の方になります)
【エラーの原因】
<test2>
通常のフォームは「Forms(フォーム名).RecordSource」で参照できますが、
サブフォームの場合、「Forms(フォーム).Controls(サブフォーム)」の時点では
「Controls」という言葉が示す通り「コントロールとしてのサブフォーム」が
参照されている形になります。
そのため、「サブフォームの、フォームとしてのプロパティ(RecordSource等)」の
参照には、「.Form」(メインフォームの参照時と違い、ここは「s」が入らない)が
必要になります。
(コントロールとしてのサブフォームには「RecordSource」というプロパティが
ないため、「プロパティをサポートしていない」というエラーになる、と)
※コントロールとしてのサブフォーム」のプロパティ、例えば「ソースオブジェクト
(SourceObject)」などを参照する場合は、「.Form」は無用です。
(MsgBox Forms(フォーム名).Controls(サブフォーム名).SourceObject)
<test3>
「Forms(フォーム)」の構文で指定できるのは、メインフォームとして展開している
フォームに限られます。
そのため、「フォーム1」フォームが「土台」フォーム内のサブフォームとしてのみ
開いていて、メインフォームとして開かれてはいない場合は、ご質問にあるように
「フォームが見つかりません」(「フォーム名」となっているのは、打ち間違い?)
というエラーになります。
ありがとうございます。
変数名については以後気をつけます。
<test3>については理解できました。
<test2>については理解力がなくよくわからないのですが
>そのため、「サブフォームの、フォームとしてのプロパティ(RecordSource等)」の
>参照には、「.Form」(メインフォームの参照時と違い、ここは「s」が入らない)が
必要になります。
この「.Form」はどこにつければいいのでしょうか?
MsgBox Form(サブフォーム).RecordSource
MsgBox Forms(フォーム).Form(サブフォーム).RecordSource
MsgBox Forms(フォーム).Form.Controls(サブフォーム).RecordSource
もエラーになってしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
このQ&Aを見た人はこんなQ&Aも見ています
-
今年はじめたいことは?
今年はこれをはじめたい!ということを教えてください!
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
【お題】斜め上を行くスキー場にありがちなこと
運営も客も一流を通り越して斜め上を行くスキー場にありがちなことを教えて下さい。
-
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
-
4
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
5
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
6
【ACCESS2003】サブフォーム名を変数に入れたい
Visual Basic(VBA)
-
7
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
8
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
9
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
10
アクセス エラーを数値「0」に変換するには
Access(アクセス)
-
11
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
12
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
13
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
14
access vba 開いていないフォームのプロパティを編集したい
Access(アクセス)
-
15
access2021 強制終了してしまう
Access(アクセス)
-
16
ACCESS VBA でのエラー解決の根拠がわかりません エラー「イベントプロパティに指定した式・・
Access(アクセス)
-
17
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
18
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
19
ACCESSでコントロールソースの変更
Access(アクセス)
-
20
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォームに対してGoToRecor...
-
Accessでセレクタをダブルクリ...
-
サブフォームのあるフォームか...
-
Access Dsum関数
-
皆さん使っているブラウザを教...
-
Access VBA には Gridはないで...
-
Access フォームで条件抽出し...
-
Access フォームを一つにまとめる
-
アクセスのサブフォームからメ...
-
ACCESS──メインフォームでサブ...
-
Accessで埋め込んだサブフォー...
-
Access レポート印刷するときに...
-
エクセルVBAからアクセスフ...
-
passwordが入れられません・・・・
-
アクセスのレポート合成(複数...
-
vbaで列を非表示にする方法はあ...
-
YahooのIDがロックされてしまい...
-
iphoneのフルスクリーンの解除方法
-
Excel 入力規則 リスト 複数...
-
ExcelVBAで指定外のUserFormを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブフォームに対してGoToRecor...
-
クエリで出来た表にチェックボ...
-
親・子リンクフィールドの設定...
-
親フォームからサブフォームの...
-
サブフォームを非表示させる方...
-
ACCESSのフォームで列固定?
-
ACCESSにて
-
Accessで埋め込んだサブフォー...
-
Access VBA には Gridはないで...
-
ACCESS──メインフォームでサブ...
-
サブフォームのあるフォームか...
-
サブフォームに変数を代入し、R...
-
access vba サブフォームに条件...
-
Access SUMの結果が何もない時...
-
アクセス2003のサブフォームの...
-
Access2007 ラベルの削除がで...
-
【Access】サブフォームのソー...
-
accessサブフォームでのパラメータ
-
ACCESS VBA メインフォーム及び...
-
全てのサブフォーム名を取得したい
おすすめ情報