アプリ版:「スタンプのみでお礼する」機能のリリースについて

タイトルのままなのですが、

フォームA(メインとなる画面)と
フォームB(コードの検索画面)があり、
フォームAからフォームBをダイアログモードで開いている状態から、
フォームBを閉じたときに、フォームA側でマクロを実行したいと思っています。

具体的には、フォームAにコード入力用のテキストボックスがあり、コード検索のためにフォームBを立ち上げ、コードを選択した後フォームAのテキストボックスにそのコードを入れて、そのコードの値を元にフォームAにあるコンボボックスの再クエリを行いたいのです。

コンボボックスの再クエリの方法等は理解しているのですが、
上記のような場合に、どのイベントがキックされるのかが分かりません。
どのようにすれば(どのイベントを選んでマクロを指定すれば)適切に実行できるでしょうか。

A 回答 (3件)

Private Sub Form_Close()


  Forms("Test").Controls("txtAAA") = Me.テキスト0
  Forms("Test").Requery
End Sub

コンボボックスならば、

Forms("Test").Controls("コンボボックス名")Requery

とフォームを閉じる時に・・・。
ただ、これだけですと、テスト時に親が開いてないとエラーになってややこしいです。
そこで、次のようにフォームが開いているかチェックしたがいいです。

Private Sub Form_Close()
  If FormIsLoaded("A") Then
    Forms("Test").Controls("txtAAA") = Me.テキスト0
    Forms("Test").Requery
  End If
End Sub

Public Function FormIsLoaded(ByVal frmName As String) As Boolean
On Error Resume Next
  FormIsLoaded = CurrentProject.AllForms(frmName).IsLoaded
End Function
    • good
    • 0
この回答へのお礼

ありがとうございます!できました。

ただ、なるべくVBAではなくマクロで処理したいと思っていますので、質問は閉じずに残させて下さい。

お礼日時:2006/09/13 16:27

全部、マクロでということなら



「フォームを開く」--------- (1)
  フォーム名:B
  ウィンドウモード:ダイアログ
フォームB側で「値の代入」---(2)
「再クエリ」等の処理--------(3)

ダイアログモードでフォームを開くと、
そのフォームが閉じられるか、非表示にされるまで、
次の行は実行されませんから、
あらためて、イベントで処理しなくても
同じマクロに (1)(3)を連続してかけばよろしいのでは?

この回答への補足

ご回答ありがとうございます。

(2)と(3)はフォームB側のマクロに記述することになると思いますが、
フォームB側のマクロで、フォームAのコンボボックスの再クエリを実行することはできないようなのです。

私の知識が不足しているだけかもしれません。もし「フォームB側のマクロで、フォームAのコンボボックスの再クエリを実行する」ということがVBAではなくマクロで可能でしたら、具体的な記述方法を教えて頂けないでしょうか。
保守性を高めるため、なるべくVBAは避けようと思っておりますので。。。
宜しくお願い致します。

補足日時:2006/09/13 14:31
    • good
    • 0

フォームBの処理


「値の代入」
「オブジェクトの選択」
  オブジェクトの種類:フォーム
  オブジェクト名:フォームA
「再クエリ」
  コントロール名:コンボボックス名
でいかがでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!