• ベストアンサー

Access modalフォームからdialogフォームの呼出しについて

お世話になります。 AccessのVBAはどの分類が適切なのかが分からないのでこちらに投稿させていただきます。 modalフォームAから戻り値を返すdialogフォームB(カレンダーコントロールから日付を取得)を呼出したいのですが、フォームBからフォームAに戻ってきたときにAccess自体が固まってしまします。(フォームAがアクティブになりません。) VB6では同様な仕組みで問題なく動作しているのですが、解決策はありますでしょうか? また、modalプロパティ指定時になにか他のプロパティも設定する必要がありますでしょうか? よろしくお願いします。

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

  • ベストアンサー
noname#60992
noname#60992
回答No.1

Acc2000で フォームAの開くときのイベントで me.modal = true を指定し フォームBを開く際に DoCmd.openform "フォームB",,,,,acDialog フォームBを閉じるときに DoCmd.close としてやってみたら普通に動きましたけれど、 何か違うことをしておられるのでしょうか?

ken-mm
質問者

補足

全ての画面で行ないたいので、Formオブジェクトをクラスモジュールで受取り、その中でModal設定しております。 ご指摘の通り、個々のフォームにて設定してできました。 VB6だと上記方法で設定可能なのですが、AccessはNGなのでしょうか?

その他の回答 (1)

noname#22222
noname#22222
回答No.2

何かのバグかも知れません。 ともかく、全てのコードを示しておきます。 ************** カレンダーを開く ************** Private Sub コマンドカレンダー_Click() On Error Resume Next   Me.Modal = True   DoCmd.OpenForm "カレンダー", , , , , acDialog, "日報,日付" End Sub ************** カレンダーフォーム ************** ・テキストボックス[日付]を配置。 Option Compare Database Option Explicit Private Sub Calendar0_Click()   Me.日付 = Me.Calendar0.Value End Sub Private Sub Form_Close()   Forms(CutStr(Me.OpenArgs, ",", 1)).Controls(CutStr(Me.OpenArgs, ",", 2)) = Me.日付 End Sub Private Sub Form_Load()   Me.日付 = Me.Calendar0.Value End Sub ************** 共通標準ライブラリー ************** Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function ※一回、全ての関連するプロシージャを消して書き直して見て下さい。

関連するQ&A