• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ヘッダーフォームからサブフォームを動かすVBAを組めるの?)

VBAでヘッダーフォームからサブフォームを動かす方法

このQ&Aのポイント
  • Access97/VBAを使用して、棚と棚上の製品を管理するデータベースを作成しています。
  • ヘッダーフォームでは棚の場所を管理し、サブフォームでは製品番号と棚の移動記録を管理しています。
  • サブフォームで複数の品番の「前」の内容を一括コピーする方法について、VBAを利用して実現したいのですが、うまくいきません。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

ごめんなさい! 今、猛烈に仕事がキてます。今日も明日も休みなしで、睡眠時間もまともに取れない状態です(涙 今しばらくお待ちくだされ! とりあえずは以下のことを補足していただけると助かります。 ○ Q_前の棚番号の一括コピー クエリをダブルクリックして、パラメータを手動で入力してみましたか? それで動くようであれば、VBA側の問題、動かなければクエリ側の問題だと思うのですが… ○(先にも書きましたが、)メインフォーム上にコントロールソースに「棚番号」が設定されているテキストボックスがありますか? あるいは、フォームのレコードソースに「棚番号」を含まないテーブル/クエリが設定されていますか? それとも? うーやばいっす~ もう寝ます。 ごめんなさいね~

その他の回答 (2)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

メインフォームの「レコードソース」プロパティにクエリ名かテーブル名を設定されていますよね。 そのクエリ/テーブルには[棚番号]フィールドはありますか? あるいは、テキストボックスやコンボボックスの値を抽出条件として使用したいのであれば、 Me.コントロール名 ってな感じで指定してください。 また、フィールド名と同じ名前のテキストボックスがあって、その「コントロールソース」プロパティが設定されていなかったり、別のフィールド名が設定されていたりすると、Accessが混乱してしまう場合があります。 そんなときは、コントロールの名前を別のものにすると解決するはずです。 osakana_kiraiさんが試されている方法は、パラメータクエリを使ったやり方ですよね。 どちらかというとそのやり方はマイナーだと思いますので、できればレコードセットを使って解決を図りたいところなんですが… と、ここまで書いといて何ですが、ごめんなさい。時間が尽きてしまいました。(すいません、明日早いもので…) 尻切れトンボではありますが、今日のところはこれにて失礼!

noname#118698
質問者

お礼

お返事を下さってありがとうございます。頼りにしています。本当です。よろしくお願いします。 現在、やはり「一括コピーボタン」は動かないままで、サブテーブル内の修正・登録作業は、一番上の行をコピーして貼ってコピーして貼って・・・・と非常にアナログな感じで行っています。10件20件ならいいのですが、50件同じデータをカット&ペーストしていくのは辛い…。(こんな私がデータベースを作っていること自体間違いな気がしますが…) お時間がある時で結構です。きちんと動く方法を教えて下さい。 よろしくお願いします。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

メインフォームから、サブフォーム上の情報を参照するには Me![サブフォームコントロールの名前].Form![サブフォーム上のコントロールの名前] ってな感じになります。 こんなんで宜しいでしょうか? 分かりにくければ補足してください。

noname#118698
質問者

補足

ありがとうございます!本当に!昨日からまだ苦しんでいます!教えて頂いたようにやってみた結果、黄色かった文の黄色が消えました!でも、次の行が黄色になってしまいました・・・。もう、どうしていいかわかんないんです。タシケテー! 私がやっているのはこうです。 (1)Header_Formの下にSub_Formがマトリックスのように出ている以下の様なフォームを作る 【Header】 棚 番 号 : 25089 棚上Item : ロケットランチャー類 (前の一括) (現の一括)・・・・・・コマンドボタン 【S u b】 棚番号 / Item品番 / 前の棚番 / 現の棚番 25089 / 256-44 / G25-K350 / K36-HG23 25089 / 321-22 / ・・・上の行の「前の棚番」をコピーしたい (1)Sub_Tableで更新Query(名前は「Q_前の棚番号の一括コピー」)を組む フィールド : 前棚番号 棚番号 テーブル : Sub_Table Sub_Table コードの更新 : [p前] 抽 出 条 件 : [p棚番号] (2) Header_Formにコマンドボタン作成…プロパティの「クリック時」に「イベントプロシージャ」設定 (3) VBA設定・・・ Private Sub コマンド366_Click() Dim dbs As Database, qdf As QueryDef Set dbs = CurrentDb Set qdf = dbs.QueryDefs![Q_前の棚番号の一括コピー] qdf("p前") = Me![Sub_Tableのサブフォーム].Form![前] qdf("p棚番号") = Me![棚番号] qdf.Execute dbs.Close End Sub qdf("p前")=~以下は教えて頂いたように入れたら黄色くならなくなりました。ただ、今度はその下の"p棚番号"の行が黄色くなってしまいます。 「実行時エラー '2465'/指定した式で参照されている'棚番号'フィールドがみつかりません」という警告文が出てきます。「Queryをかませているからわかりにくいじゃ?」と同僚に言われましたが、最初にこのVBAを教えてくれた人がこの方法だったので・・・。クエリーを組まない方がわかりやすいなら、どうかそのやり方を教えて下さい!なんか長くなっちゃいました・・・。あんまり忙しくない時でいいので是非教えて下さい。タシケテー!

関連するQ&A