Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


854 / 2272 ツリー ←次へ | 前へ→

【9780】他のフォームのオブジェクトの参照法 くまごろう 07/8/24(金) 19:05 質問[未読]
【9781】Re:他のフォームのオブジェクトの参照法 Gin_II 07/8/24(金) 23:04 回答[未読]
【9783】Re:他のフォームのオブジェクトの参照法 くまごろう 07/8/25(土) 11:22 質問[未読]
【9784】Re:他のフォームのオブジェクトの参照法 hatena 07/8/26(日) 18:52 回答[未読]
【9791】Re:他のフォームのオブジェクトの参照法 くまごろう 07/8/28(火) 16:58 お礼[未読]

【9780】他のフォームのオブジェクトの参照法
質問  くまごろう  - 07/8/24(金) 19:05 -

引用なし
パスワード
   現在アクティブなフォームが Form1 だったとして、そこから Form2 の TBxTitle の値を文字列変数Sに読む場合、
S = Forms!Form2!TBxTitle
で良いと思いますが、この「Forms!Form2!TBxTitle」または「Forms!Form2!」の部分を変数(?)に格納して利用し、毎回全文を書かなくても良い方法はあるでしょうか。

実際にはフォーム名もコントロール名も長いし、場合によってはフォームも別のものに切り替えることが必要なのです。

【9781】Re:他のフォームのオブジェクトの参照法
回答  Gin_II  - 07/8/24(金) 23:04 -

引用なし
パスワード
   > この「Forms!Form2!TBxTitle」または「Forms!Form2!」の部分を変数(?)に
> 格納して利用し、毎回全文を書かなくても良い方法はあるでしょうか。

Dim ctr As Control
Set ctr = Forms!Form2!TBxTitle

もしくは、

With Forms!フォーム名!コントロール名
  .Visible = False
End With

ってこと?

【9783】Re:他のフォームのオブジェクトの参照法
質問  くまごろう  - 07/8/25(土) 11:22 -

引用なし
パスワード
   質問を簡単にしようとして、かえってわかりにくい質問になってしまいました。すみません。
『「Form100元のデータ」 の各レコードにあるデータに何らかの処理を加え、処理済のデータを「Form120新しいデータ」に新レコードとして加えていく』というのが、やりたい内容なんです。
 その場合、FormAでは、例えば TBxID は Me.TBxID(または Forms!FormA.TBxID)、TBxTitle は Me.TBxTitle(または Forms!FormB.TBxTitle)で良いかと思いますが、送り先の FormBについては "Forms!FormB.TBxTitle"などとフルネーム(?)で指定するより他に方法はないのでしょうか。

 Dim S as String
 Dim ID as String
 Dim LChNmb as Long

などとして、「Form100元のデータ」から得たデータを処理しながら、

 Forms!Form120新しいデータ.TBx氏名 = S
 Forms!Form120新しいデータ.TBxID = ID
 Forms!Form120新しいデータ.TBx行数 = LChNmb

と「Form120新しいデータ」に送り込みたいのですが、この「Forms!Form120新しいデータ」の部分だけでももっと簡単な方法はないものかと思いまして。項目数が20近くあるのでタイプ・ミスなく書くのも大変です。

例えば別のフォームのレコードを1つ先に進めるのに
  Dim ToForm as String

  ToForm = "Form120新しいデータ"
  DoCmd.GoToRecord acDataForm, ToForm, acNewRec

でちゃんと動くのに

  ToForm.TBx氏名 = S ではエラーになってしまう…
  ToForm & ".TBx氏名" = S でもエラーになってしまう…

かといって
 Dim To氏名 as Textbox
 
 Set To氏名 = Forms!Form120新しいデータ.TBx氏名

ではいきなりエラーになってしまう…。
お察しの通り、私はVBA超初心者です。どうか、お助けください。

【9784】Re:他のフォームのオブジェクトの参照法
回答  hatena  - 07/8/26(日) 18:52 -

引用なし
パスワード
   >  Forms!Form120新しいデータ.TBx氏名 = S
>  Forms!Form120新しいデータ.TBxID = ID
>  Forms!Form120新しいデータ.TBx行数 = LChNmb
>
> と「Form120新しいデータ」に送り込みたいのですが、この「Forms!Form120新しいデータ」の部分だけでももっと簡単な方法はないものかと思いまして。項目数が20近くあるのでタイプ・ミスなく書くのも大変です。

Dim f As Form

Set f = Forms!Form120新しいデータ

f.TBx氏名 = S
f.TBxID = ID
f.TBx行数 = LChNmb

とか、

With Forms!Form120新しいデータ
 .TBx氏名 = S
 .TBxID = ID
 .TBx行数 = LChNmb
End With

ということかな。

【9791】Re:他のフォームのオブジェクトの参照法
お礼  くまごろう  - 07/8/28(火) 16:58 -

引用なし
パスワード
   すばらしい!!!
あきらめて、全部打ち込んでいました。これでリストがすっきりします。
教えていただくと『なぁんだ、簡単なことなんだ…』って思いますが、その簡単なことが判っているかどうかって、すごい大きな違いなんですよね。

本当にありがとうございます。

854 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free