フォームを作成すると同時にイベントを作成する方法は?
アクセスなのですが
標準モジュールで
Sub フォームを作成()
Dim myForm As Form
Set myForm = CreateForm
DoCmd.Close acForm, myForm.Name, acSaveYes
End Sub
をしたと同時に、
そのフォーム内に
Private Sub Form_Open(Cancel As Integer)
MsgBox "開きました"
End Sub
のようなイベントを同時に生成するにはどうすればいいでしょうか?
クラスモジュールを使うのですか?
クラスモジュールの使い方がまったくわからないのですが
サンプルコードを頂けないですか?
No.1ベストアンサー
- 回答日時:
・・・ひょっとして、ランタイム環境下での開発用インター
フェースでも作成されていたりするのでしょうか・・・?
新規作成したフォームにイベントを組み込む場合の
ポイントとなるのは
・FormオブジェクトのModuleプロパティの使用
(それを経由しての、AddFromStringメソッドを
使用したコードの追加)
・Formオブジェクトの当該イベントプロパティへの
「[Event Procedure]」の設定
になります。
具体的には以下の通りです(標準モジュールでOk):
Public Sub フォームを作成()
On Error GoTo エラー処理
Dim myForm As Form, myModule As Module
'追加するコードを予め定数として宣言
'(変数で宣言して、コード内で編集してもOk)
Const cCode As String = "Private Sub Form_Open(Cancel As Integer)" & vbCrLf _
& "MsgBox ""開きました""" & vbCrLf _
& "End Sub"
Set myForm = CreateForm
'明示的に『コード保持』プロパティを「はい」に設定
'(なくても自動で設定されるようですが、念のためで)
myForm.HasModule = True
'『開く時』イベントに「[イベント プロシージャ]」を設定
myForm.OnOpen = "[Event Procedure]"
'AddFromStringを使用して、フォームモジュールに
'コードを追加
Set myModule = myForm.Module
myModule.AddFromString cCode
DoCmd.Close acForm, myForm.Name, acSaveYes
終了処理:
'オブジェクト変数を明示的に解放
Set myModule = Nothing
Set myForm = Nothing
Exit Sub
エラー処理:
MsgBox Err.Number & ":" & Err.Description, vbCritical, "フォームを作成"
Resume 終了処理
End Sub
・・・以上です。
なお、何らかの原因で一旦上記のコード実行中にエラーが
発生した際に、次に再度実行するとフォームが保存されない
現象が見られました。
もしこの現象が再現するような場合は、一旦そのAccessの
ファイルを閉じ、開き直してから再実行してみてください(汗)
(オブジェクト変数myForm/myModuleを明示的に解放して
はいるものの、残骸が内部に残っているのかもしれません)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA フォームShowでオ...
-
エクセルVBAでNumLockキーの状...
-
vbaでmsgboxの位置を指定
-
エクセル2003のマクロでコマン...
-
smartvisionで録画失敗が頻発
-
エクセルのマクロボタンが編集...
-
Application.Runエラー(1004)
-
別シートのマクロを実行する方法
-
Access終了時にマクロまたはVBA...
-
access2010 コマンドまたはアク...
-
シート保護を掛けたまま並べ替...
-
マクロ 戻るボタンを押したらシ...
-
エクセルVBAで、ボタンの文字を...
-
エクセル VBA SendKeys ループ...
-
マクロが登録できません
-
エクセルのマクロ
-
アクセスのマクロについて
-
プロシージャが大きすぎます!
-
AccessでExcelファイルを印刷
-
InputBox内の表示について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでNumLockキーの状...
-
vbaでmsgboxの位置を指定
-
エクセルVBA フォームShowでオ...
-
VBAが得意な方 助けてください...
-
Excel:アドイン(ThisWorkbook)...
-
【Excel】BeforeCloseを毎回呼...
-
HULFT完了コードについて
-
smartvisionで録画失敗が頻発
-
エクセルのダブルクリックで
-
フォームを作成すると同時にイ...
-
エクセル2003のマクロでコマン...
-
エクセルVBAでワークシートのコ...
-
エクセルのマクロボタンが編集...
-
別シートのマクロを実行する方法
-
Access終了時にマクロまたはVBA...
-
Application.Runエラー(1004)
-
シート保護を掛けたまま並べ替...
-
エクセルVBAで、ボタンの文字を...
-
access2010 コマンドまたはアク...
-
マクロ 戻るボタンを押したらシ...
おすすめ情報