サブフォーム内にあるテキストボックスをダブルクリックしたときに
set ctrlTextBox1 = Forms!サブフォーム内のテキストボックス
としたいんですが、「Forms!」以降の記述方法がわかりません。
どなたかご存じでしょうか…?
テキストボックスの名前を「テキストボックス1」、
このテキストボックスがあるフォームの名前を「フォーム1」
にした場合は、以下の様になります。
Dim ctrlTextBox1 As Control
Set ctrlTextBox1 = Forms![フォーム1].テキストボックス1
Yoichi Yoshimura
takao
レスありがとうございます。
お二方から教えていただいた記述方法を用いても
実行時エラー '2450':
マクロの式または Visual Basic コードで参照されている'[サブフォーム名]'フォ
ームが見つかりません。
と表示され、うまくいきません。
当方の状況をもう一度申しますと…
・テーブルと連結されたサブフォーム(帳票フォーム)を作成。
・テーブルの「日付」フィールドと連結されたテキストボックス(コントロール名
「入力日」)をサブフォーム内に配置。
・テキストボックス(「入力日」)のイベント(クリック時)に、
set ctrl = テキストボックス(「入力日」) 'ctrl→コントロール型
と指定したい。
以上です。
つたない文章で申し訳ありませんが、私のVBA記述方法が悪いんでしょうか…
set ctrlTextBox1 = Forms![メインフォーム名]![サブフォーム名].form![テキスト
ボックス名]
でどうでしょう!
ぴの
これ変数の宣言はどこでやってます? プロシージャ内かサブフォームの宣言部
でやっているのなら、
Set ctrlTextBox1 = Me.テキストボックスの名前
で OK です。
--
-=-=-=-=-=-=-=-=-=-=-
井上 祐彦
masa...@hotmail.com
-=-=-=-=-=-=-=-=-=-=-
To 井上様
モジュールを追加してパブリック変数として宣言してますので、プロジェクト全体か
ら見渡せる変数です。
??? でも最初の投稿では Public じゃなくて Dim で宣言されてますけど?
すると、実際は
Public ctrlTextBox1 as Control
となっているのに、サブフォームのテキストボックスの DblClick イベントで
Set ctrlTextBox1 = Me.テキストボックスの名前
としてもエラーになるということでしょうか?
では、とりあえず ctrlTextBox1 と Me.テキストボックスの名前 をウォッチし
て、イベントハンドラのエントリ直後でブレークしてみてください。多分どちらかが
対象範囲外になっていると思うのですが。
前回のInoue様のレス内容から…
> これ変数の宣言はどこでやってます? プロシージャ内かサブフォームの宣言部
>でやっているのなら、
>
>Set ctrlTextBox1 = Me.テキストボックスの名前
>
>で OK です。
変数の宣言ばかりに目がいってて、「Me.テキストボックスの名前」
という部分を試さずにおりました。
みなさま大変ありがとうございました。
PS. Meを使わない方法ってあるんですかねぇ、まだまだ勉強ですね(._.)φ
フルに指定したいのなら、
Forms!親フォーム.サブフォーム.Controls("コントロール名")
フォーム名は何段階つなげても OK です。でも親フォームの名前が変わったり、別の
親フォームに違う名前で埋め込んであるときに動かなくなるので、普通はこうやって
指定するのは 「他のフォームからコントロールを指定するとき」 ですね。