サブフォームに変数を代入し、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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
好きな「お肉」は?
牛肉、豚肉、鶏肉、ラム肉、クマやシカの狩猟肉……。 いろ〜んな肉が食べられるようになりましたよね。 あなたがこれまで食べて「これはうまい!」とか「なんじゃこりゃ!」と好きになったお肉を教えてください。
-
Access サブフォームでの選択行の取得
その他(データベース)
-
【ACCESS2003】サブフォーム名を変数に入れたい
Visual Basic(VBA)
-
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
-
4
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
5
AccessVBA RecordSourceのリセットについて
Access(アクセス)
-
6
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
7
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
8
ACCESSでコントロールソースの変更
Access(アクセス)
-
9
ACCESSのBookmarkプロパティの使い方
その他(データベース)
-
10
ACCESS 複数のフォームから同一テーブル参照
Access(アクセス)
-
11
【Access】テキストボックスに入力後、そのテキストボックスを無効化する方法について
その他(Microsoft Office)
-
12
yes/no型のチェックができない(アクセス2003)
Access(アクセス)
-
13
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
14
Accessの実行時エラーについて
その他(データベース)
-
15
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
16
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
17
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
18
Access VBA Me.Requery レコードは削除されています エラー
その他(データベース)
-
19
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
20
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クエリで出来た表にチェックボ...
-
サブフォームを非表示させる方...
-
サブフォームに対してGoToRecor...
-
ACCESS──メインフォームでサブ...
-
Access2007が強制終了する事象...
-
ACCESSのサブフォームコピーに...
-
ACCESSにて
-
ACCESSのフォームで列固定?
-
Access2007 ラベルの削除がで...
-
ACCESS サブ・メインフォーム...
-
access フォーム上で複数行の...
-
Accessで埋め込んだサブフォー...
-
access サブフォーム間の連動に...
-
AccessでHTMLのフレームの様に...
-
Access SUMの結果が何もない時...
-
サブフォームのあるフォームか...
-
Access VBA には Gridはないで...
-
Access 2003でサブフォームが更...
-
全てのサブフォーム名を取得したい
-
accessでコンボボックスとサブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブフォームに対してGoToRecor...
-
クエリで出来た表にチェックボ...
-
サブフォームを非表示させる方...
-
ACCESS──メインフォームでサブ...
-
親・子リンクフィールドの設定...
-
親フォームからサブフォームの...
-
Access VBA には Gridはないで...
-
Accessで埋め込んだサブフォー...
-
ACCESS VBA メインフォーム及び...
-
ACCESSサブフォームにデータ反...
-
ACCESS サブ・メインフォーム...
-
ACCESSにて
-
Access SUMの結果が何もない時...
-
ACCESSのフォームで列固定?
-
サブフォームのあるフォームか...
-
Access2007 ラベルの削除がで...
-
Access Dsum関数
-
アクセス2003のサブフォームの...
-
サブフォームに変数を代入し、R...
-
サブフォームの高さをVBAで調整...
おすすめ情報