• ベストアンサー

Access2003 VBA イベントハンドラ

メインフォームからインスタンス化して色々な用途に使用するサブフォームがあります。 そのフォームにはボタンがついていますが、用途別にインスタンス化するときに、別々のクリックイベントをセットしたいのですが、方法が分かりません。 set subform = New subformの基 subform.button1.OnClick="=関数名" とやると、「イベント プロパティに指定した式 クリック時 でエラーが発生しました:このオブジェクトにはオートメーションオブジェクト'関数名'は含まれません」、と実行時エラーが出ます。 ひょっとして、こういう使い方はできないのでしょうか?

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

はずしている可能性大ですが > subform.button1.OnClick="=関数名" 定義された関数は Function で作られてますか。 Sub ではできなかったかと思います。 また、関数には引数(パラメータ)はありますか。 なければ、subform.button1.OnClick="=関数名()" としてどうなりますか。 ※ エラーメッセージから、後者の () が付いていない時の様な気がします。

KAZUMI2003
質問者

お礼

ありがとうございます。 関数はfunctionでした。 ()の追加で上手く動作しました。 どうも、こういう所の基礎が分かっていなかったようです。 本当にありがとうございました。

関連するQ&A

  • イベントハンドラの用法を教えてください

    onload,onBeforeUnload,onUnload,onResizeStart,onResize,onResizeEnd onSelectChange,onSelectStart,onScroll,onStop,onAbort,onStart,onFinish 等の具体的な使い方が載ってるサイトを教えていただけないでしょうか。 1つ1つ調べていったのですがどうも効率が悪く、調べてもどのタイミングでどういった操作をすればいいのかがわかりませんでした。 できれば、関数名を使った用法が書いてあるサイトであればさらにありがたいです。 例: <button onclick="関数名"> 関数を呼びましょう </button> <br><br><small>onClickイベントで呼ぶ</small><br>

  • サブフォームの新規レコードに移動したい アクセス

    親フォームのコマンドボタンをクリックしたら 親フォームにはまっているサブフォームの新規レコードに移動したいのですが、 うまくできません。 サブフォームのオブジェクト名は、"F_SubForm"です。 サブフォームはデータシートビューです。 VBAコードは Private Sub cmd_test_Click() DoCmd.SelectObject acForm, "F_SubForm" DoCmd.GoToRecord , , acNewRec End Sub です。 上記コードを実行すると DoCmd.SelectObject acForm, "F_SubForm" の部分で、 「実行時エラー 2489  オブジェクトが開いていません。」 となります。 だからと言って、 DoCmd.GoToRecord , , acNewRec だと、何も起こりません。(新規レコードに移動しません) 解決方法をご教授ください。

  • サブフォームでのダブルクリックイベント

    Access2003です。 フォームにサブフォームを設置し、直接テーブルを表示させています。 このサブフォームのテーブルのある行をダブルクリックしたら その行のデータを他のフォームのオブジェクトにセットしたいのですが 行や行のデータ全てを取得は出来るのですが、サブフォームのイベントがEnterとExitしかなくて、イベント発生が出来ません。 フォームのダブルクリックでXとYを見て…と思ったのですがサブフォーム上ではフォームのダブルクリックイベントが発生せず。 サブフォームのテーブルはユーザーがソートする事もあるのでベタに上にテキストボックス等を置く事は出来ません。 どうにかダブルクリックで動作させる方法はありませんでしょうか?

  • 単票フォームにあるタブのサブフォーム

    Access2013 vba 単票フォームFormAがあり、そこにタブTabBを配置します。 そのタブの中に、サブフォームフレームSubFmFrameを配置 このフレームの中に、サブフォーム SubFormがあるとします。 その時、サブフォームのイベントで何かの処理をスル場合に、自分のフォームのフィールドの値を取得するのには、親フォームから参照したやり方をしなくてはいけないのでしょうか。 その場合の書き方がわかりません。 サブフォームから、Set objP = Me.Parent としても、エラーになります。 親フォーム:FormA タブ:TabB サブフォームフレーム:SubFmFrame サブフォーム名:SubForm 宜しくお願いします。

  • イベントハンドラ関数について

    現在VC++/CLR 2005 でプログラミングをしています。 基本的な事柄かもしれませんが、質問させてください  以下の2つのボタンのイベントハンドラ関数があった場合 //ボタン1のイベントハンドラ関数 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) String^ str = textBox1->Text } //ボタン2のイベントハンドラ関数 private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { } ボタン2をクリックしたときの動作とボタン1の動作を同じにしたいと思っています。 その場合は private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) String^ str = textBox1->Text } //ボタン2のイベントハンドラ関数 private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { String^ str = textBox1->Text } のようにボタン2のイベントハンドラ関数をボタン1と同じように書けばいいのですが イベントハンドラ関数の処理が膨大になった場合を考えて省略する 書き方は無いのでしょうか?(以下の場合ですとエラーが起こってしまいます。) private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { button1_Click(); } 宜しくお願いします

  • 並べ替えでエラーになる サブフォーム 2007

    現在使っているaccdbファイルがおかしいので助けてください。 フォーム1にサブフォームをはめ込んでいます。 サブフォームは帳票ビューです。 フォーム1を開いて、サブフォームのどのフィールドでも 右クリック→昇順に並べ替える・もしくは降順に並べ替える をすると、 ****************************************************************************** このオブジェクトには、オートメーションオブジェクト 'フィールドYESNO'は含まれません。 オブジェクトのプロパティを設定するか、 メソッドを実行するVisual Basicプロシージャーを実行しようとしましたが これらのプロパティまたはメソッドが使用できません。 オートメーションオブジェクトでサポートされているプロパティまたはメソッドについては、 コンポーネントのドキュメントを参照してください。 ****************************************************************************** と言うエラーになります。 並べ替えは問題なく出来ています。 フィールドYESNOは、YESNO型です。 サブフォームだけを開いて、さっきと同じように並べ替えをすると、問題なく並べ替えが出来ますが サブフォームをはめ込んだフォーム1を開いて並べ替えをすると上記のエラーになります。 普段使用する時は、フォーム1を開いてサブフォームの操作をするので、 フォーム1を開いた状態で エラーを出さずにサブフォームの並べ替えが出来るようになりたいのですが 何を修正すればよろしいでしょうか?

  • 【C#】サブフォームからメインフォームを操作

    サブフォームに設定したボタンをクリックしたらメインフォームのイベントを実行とかは可能でしょうか? メインフォーム→Main サブフォーム→Sub Mainに、ウェブブラウザ(webbrowser1)を用意して、 サブフォームのボタン(button1)をクリックしたら、 webbrowser1に、http://www.yahoo.co.jp が表示すると言うプログラムを作りたいです。 以下のプログラムではエラーが出てしまいました。 まず、Mainのフォームロード時にSubが開くように設定。 ※webbrowser1のModifiersをinternalに設定。 private void Main_Load(object sender, EventArgs e) { Sub subform = new Sub(); subform .Show(); } 次に、Subで Main mainform; private void button1_Click(object sender, EventArgs e) { mainform.webbrowser1.Navigete("http://www.yahoo.co.jp") } と書いて、実行時のエラーは無く実行できたのですが、 button1をクリックすると、エラーが出て止まってしまいます。 逆に、Subにウェブブラウザを置いて、Mainから操作するのは上記のプログラムで問題なく動きました。 どうすれば、Subからメインのイベントを操作できるのでしょうか? よろしくお願いします。

  • 【ACCESS2003】サブフォーム名を変数に入れたい

    ACCESS2003で開発しています。 ひとつのフォーム(Form1)にサブフォームを10個(SubForm01からSubForm10まで)配置しており、そのフォーム内のボタンで1つのサブフォームを切り替え表示するようにしています。 サブフォーム部分だけがページ遷移しているように見えるような感じのことしたいので、こんな面倒なことをやっています。 各サブフォームの処理は全く一緒なのですが、サブフォームが10個もある為に同じ処理をForm1に10まとまり書かないといけないので、サブフォームの名前を変数にできないかなと考えていますがやり方がわかりません。 下記ソースで色々試してみたのですが、だめでした。 具体的にはサブフォーム(SubForm01~SubForm10まで)のテキストボックス(txtBox1~txtBox30)に順に値を入れたいということです。 教えてください。 Dim strPageCnt As String 'サブフォームの番号 '(処理省略)ここでstrPageCntに01から10までのいずれかの値を放り込んでいます。 For i = 1 To rs.RecordCount 'レコードセット最大値までループ '↓ここでサブフォーム名を変数に入れる    strSubForm = frmLOT31010_SubForm & strPageCnt '↓この方法もだめ    Forms!Form1!strSubForm!txtBox(i).Value = rs("NO").Value    '↓この方法もだめ    Forms!Form1!SubForm("strPageCnt")!txtBox(i).Value = rs("NO").Value '↓これもだめ    Forms!Form1!SubForm(strPageCnt)!txtBox(i).Enable = False    '↓これもだめ Forms!Form1!SubForm(strPageCnt)!txtBox(i + 1).SetFocus next どのようにすればサブフォームの名前を変数に入れて、なおかつサブフォーム名を可変にし(ここで言うところのサブフォームの最後の数値を変えて)サブフォームが扱えるようになりますか? 教えてください。よろしくお願いいたします。

  • イベントハンドラの関数の引数について

    こんにちは。 Object.onmouseoverのイベントハンドラにObject.classNameとeventを引数とする関数(func1)を指定するにはどのような風にしたら良いでしょうか?以下のように 試しましたがいずれも動きません。 function func1(obj,event){・・・} (1)Object.onmouseover=function(){func1(Object.className,event)} //エラー:Object.classNameはNull (2)Object.onmouseover=function(Object.className,event){func1(Object.className,event)} //無反応 (3)Object.onmouseover="func1("+Object.className+",event)"; //onmouseoverでない時にfunc1が呼び出される。 よろしくお願いいたします。

  • アクセスでエラー・・・

    現在サブフォームを作っていました。 そのサブフォームには、ドロップダウン(?)の▼があります。 そこをクリックすると、項目が選べるようにしてみました。 ですが、実際に選んでみると、「”LinkMasterFields/リンク親フィールド”プロパティの設定でエラー‘オブジェクトまたはクラスがこのイベントセットをサポートしていません。'が発生しました。」というエラーが出てしまいました。 どうすればよいのかがわかりません。 よろしくお願いします。 AccessのバージョンはXPです。

専門家に質問してみよう