- 締切済み
VBAのモーダル画面作成と日付判定について
AccessのVBAで日付判定をするやり方とモーダル画面遷移のやり方を知りたいです。 テキストボックスの中に入っている文字列をyyyy/mm/dd形式に表示を変換したいです。 20210623とかは下記のコードで変換出来て、それは良いのですが適当に打った数字「325464」とか「2021/0918」を打つと「型が一致しません」、「オーバーフローしました。」と出てきてエラー文が出てしまいます。エラー文は出したくないのでif文のElseで日付以外の文字列だったら何も処理をせずそのままの表示((yyyy/mm/dd)という表示に変換はせずそのまま)という処理をしたいですがうまくいきません。IsDate関数もyyyymmdd形式は日付として認識してくれないので使えませんでした。 下記のコードは元になったコードです。 Private Sub 日付_AfterUpdate() 日付= CDate(Format(日付, "@@@@/@@/@@")) End Sub モーダル遷移に関しては、メインフォームの検索ボタンを押したら「検索」画面にモーダルで遷移するようにしたいです。 下記のコードでは一応モーダルで画面遷移するのですが、×ボタンで検索画面だけ閉じようとしたらメインフォームも一緒に閉じてしまいます。あと、なにもフォーカスを当ててない時にメインフォームでエンターキー押すと勝手に検索画面が出てくるという謎の誤作動起こしてます。 Private Sub 検索_Click() Dim ReserchForm As String ReserchForm = "検索" DoCmd.OpenForm ReserchForm, , , , , acDialog Me.Visible = False End Sub どちらもどうコードを直したらいいか分かりません。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率66% (1719/2589)
IsDate関数の引数が適切ではない。 アクティブなフォームのコントロール全てにフォーカスを当てない事ができるのか考えてみよう Me.Visible = False が何を意味するのか考えてみよう。