街中で見かけて「グッときた人」の思い出

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

A 回答 (2件)

Acc2000で



フォームAの開くときのイベントで
me.modal = true を指定し
フォームBを開く際に
DoCmd.openform "フォームB",,,,,acDialog
フォームBを閉じるときに
DoCmd.close

としてやってみたら普通に動きましたけれど、
何か違うことをしておられるのでしょうか?

この回答への補足

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

補足日時:2006/03/15 19:20
    • good
    • 1

何かのバグかも知れません。


ともかく、全てのコードを示しておきます。

**************
カレンダーを開く
**************

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

※一回、全ての関連するプロシージャを消して書き直して見て下さい。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています