他のフォームのイベントを起動させる方法

このQ&Aのポイント
  • 他のフォームのイベントを起動させる方法についてお知らせします。
  • フォーム1内でFログイン_サブフォームのcmd_ログインする_Clickを実行する方法を解説します。
  • フォームから同じプロジェクト内の他のフォームのイベントを起動させる方法をご紹介します。
回答を見る
  • ベストアンサー

他のフォームのイベントを起動させる方法

アクセスです。 Fログイン_サブフォーム と言う名前のフォームがあり、 そのフォームの中には、 cmd_ログインする と言うコマンドボタンがあります。 cmd_ログインするのクリックイベントでは フォームモジュールのcmd_ログインする_Clickに記載されたたくさんのコードがあります。 新たにフォーム1を作り、コマンドボタンを押下すると、 Fログイン_サブフォームのcmd_ログインする_Clickを実行させるにはどうすればいいでしょうか? フォーム1のフォームモジュールの Private Sub コマンドボタン_Click() で、 Call Fログイン_サブフォーム!cmd_ログインする_Click としましたが、 VBAを実行する前に、コンパイルエラーになります。 Fログイン_サブフォーム!cmd_ログインする_Click としてもダメです。 フォームから同じプロジェクト内の他のフォームのイベントを起動させる方法を教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1623/2463)
回答No.1

Public cmd_ログインする_Click() としてみてはいかがでしょう。 あと、違うフォームからでしたら、フォーム、サブフォーム、プロシージャと指定する必要があるような気がしますが。

IXFVGNLKFS
質問者

お礼

回答頂きありがとうございました。

関連するQ&A

  • クリックイベントなのに、2回クリックしないとフォー

    クリックイベントなのに、2回クリックしないとフォームが閉じないです。 フォームに閉じると言うコマンドボタンがあり、クリックイベントで Private Sub cmd_閉じる_Click() DoCmd.Close acForm, Me.Name End Sub としてるのですが、なぜか1回ボタンを押しただけではフォームが閉じません。 2回目押した時にフォームがとじます。 ダブルクリックでも閉じます。 Private Sub cmd_閉じる_Click() 'DoCmd.Close acForm, Form_Fフォーム.Name End Sub のように、フォーム名を指定すると1回のクリックで閉じます。 しかしMe.Nameだと2回目じゃないと閉じない理由がわかりません。 Fフォームは他フォームから DoCmd.OpenForm Form_Fフォーム.Name, acNormal で開いたから2回クリックしないと閉じないのでしょうか?

  • 親フォームからサブフォームのレコードソースを設定

    親フォームからサブフォームのレコードソースを設定するには? フォーム1にテーブル1をドロップアンドドラッグして、「テーブル1のサブフォーム」を作成しました。 フォーム1にあるコマンドボタンから「テーブル1のサブフォーム」のRecordSourceを設定する方法を教えてください。 「テーブル1のサブフォーム」からなら Private Sub Form_Load() Me.RecordSource = "" End Sub とできるのですが、 やりたいことはフォーム1からのイベントなので 「テーブル1のサブフォーム」からのイベントは使えません。 だからってフォーム1の Private Sub コマンド2_Click() Me.テーブル1のサブフォーム.RecordSource = "テーブル1のサブフォーム" End Sub とするとコンパイルエラーになります。 良い方法があれば教えてください。アドバイスよろしくお願いします。

  • フォームモジュール イベントが発動しない半角→全角

    コマンドボタンのコントロール名に「カード」(←これは半角です)とつけて、クリックイベントのプロシージャーを紐づけようとしたら、 Private Sub カード_Click() End Sub になってしまい、そのコマンドボタンをクリックしてもイベントが発生しません。 Private Sub カード_Click()の部分にブレークポイントを設置しても、通過されません。 都合上全て半角でコントロール名をつけてしまったため、コントロール名を変えたくないのですが VBAのフォームモジュールで「カード」(←これは半角です)とすると、 勝手に全角になってしまうのですが、 この機能を止める方法はありますか?

  • サブフォームをリクエリしたい

    メインフォームのコマンドボタンを押下するとvbaを使ってテーブルのデータを更新します。 メインフォームの中にはサブフォームがあり、 そのサブフォームとテーブルがリンクしています。 サブフォームにはテーブルのデータが表示されており、 メインフォームのコマンドボタン押下→テーブルデータ更新 がされると、全て#Deletedという文字が表示されます。 なので、 Private Sub cmd_データ更新_Click() Call データ更新 Me.Controls("Fサブ").Form.Requery End Sub としたのですが、 「実行時エラー’2465’:指定した式で参照されている’Fサブ’フィールドが見つかりません。」 が発生します。 Me.Controls("Fサブ").Requery これにしても同じでした。

  • 親フォーム名を取得するには?

    フォーム1を作り、さらにフォーム2を作り、 フォーム1にはめ込んで、フォーム2をサブフォームとしました。 そのフォーム2にコマンドボタンを作成しました。 そしてそのコマンドボタンをクリックしたときに、メッセージを表示させたいのですが、 内容は 「現在のフォームの親フォームはフォーム1です」です。 Private Sub コマンド0_Click() MsgBox Me.Name & "の親フォームは " & Me.Parent & "です" End Sub だと実行時エラー450になります。

  • 不要なイベントを削除したい

    フォームにコマンドボタン(名前:コマンド0)を置いて、 [イベント プロシージャ]にしてクリックするとVBE画面にプロシージャーが作成されますよね。 しかしそのコマンドボタンの名前を変更して(新しい名前:新コマンド0)、さっきと同じように [イベント プロシージャ]にしてクリックすると新たなプロシージャの型が作成されますよね。 Private Sub コマンド0_Click() End Sub Private Sub 新コマンド0_Click() End Sub こんなかんじで。 そんな事を一杯やり過ぎて、 Private Sub コマンド0_Click() End Sub の方がいっぱい余ってる?浮いてる?イベントに紐づいてない状態なのですが、 量が多すぎてどれが不要なプロシージャーなのかわからないのですが、 一気に削除する方法はありますか? 別にほっといても問題ないとは思うのですが、不要なものは削除したいです。

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

    親フォームのコマンドボタンをクリックしたら 親フォームにはまっているサブフォームの新規レコードに移動したいのですが、 うまくできません。 サブフォームのオブジェクト名は、"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 だと、何も起こりません。(新規レコードに移動しません) 解決方法をご教授ください。

  • 他のデータベースのフォームを開きたい

    いつも、お世話になります。 ・予定(accdb)の " フォームA" で作業中 ・会社予定(accdb)の "F_Calendar" のフォームを開いて参照したい場合 予定のフォームAに "コマンドボタン" を配して、クリックのイベントブローシャー に、記述するのを色々調べ、手本にしましたがうまくいきません。 試したことは下記のことですが、メチャメチャになっていると思います。 お解りの方がいましたら、お教えいただきたいと思いますのでよろしくお願いいたします。 あるいは、クリック時のマクロでは出来ないでしようか? Option Compare Database Dim appAccess As Access.Application Set appAccess = CreateObject("Access.Application.9") Private Sub コマンド37_Click() appAccess.OpenCurrentDatabase ("C:¥Users¥Public¥仕事¥会社予定.accdb") appAccess.DoCmd.OpenForm "F_Calendar" appAccess.Visible = True Set appAccess = Nothing Exit_コマンド37_Click: Exit Sub End Sub

  • ExcelVBAのユーザフォームに関する質問です

    エクセル画面のシート1にユーザフォームを呼び出して、そのユーザフォームに設置してあるコマンドボタンを 押下するといくつかのセルの情報をテキストファイルに書き出すプログラムを作ってます。 例えば、 Private Sub CommandButton1_Click() End Sub の間にテキストファイル作成のコードを記述すればうまくいくとは思うのですが、現段階でテキストファイル作成の関数を シート1のワークシートモジュールにprivateな関数として書き込んであります。 その関数の中の引数などもprivateな変数としていくつか宣言してあり、改めて標準モジュールに関数を書き換えて、そこから ボタンイベントの中で呼び出すように作り変えるのは作業として大変に感じられました。 そこで無理かとも思うのですが、シート1のワークシートモジュールの中でコマンドボタンが押されたというイベントを拾って、 そこでファイル作成の関数を呼び出すといった作りに換えることは可能なのでしょうか? 例えばユーザフォーム内に設置したラベルは Userform1.Label1.Top = Userform1.Label1.Top + 10 といったように位置の変更がシート1から制御できたりしますが、そのような要領でできないものなのかなと思いました。 初心者なもので的外れな質問をしてしまっているかもしれませんが、ご容赦ください。 詳しい方がいらっしゃれば、ご教授お願いいたします。

  • VBA 標準モジュールとフォーム (続き)

    先ほど、同じ質問タイトルで質問させていただいたものです。この場合どうなりますか? モジュールでの変数file_nameをフォームのボタンをクリックしたら"text.xls"が表示されるようにしたいです。 (イメージとしては、エクセルのsheet1にコマンドボタンがあってクリックするとフォームが立ち上がってフォームのコマンドボタンをクリックすると"test.xls"が表示される) モジュール Private Sub CommandButton1_Click() ←エクセルsheet1にボタンがある   dim file_name as string file_name="test.xls"   UserForm1.Show End Sub フォーム(UserForm1) Sub CommandButton1_Click() ←フォームにボタンがある MsgBox file_name End Sub

専門家に質問してみよう