- ベストアンサー
フォームを削除するVBA
こんにちは。 NT4.0ででAccess97を使用しています。 あるAccessデータベースにあるフォームだけをすべて削除したいのですが、 一つ一つ削除するのは、面倒なので、VBAで一括削除したいのです。 For Each Next文を使うのだろうと思い、いろいろ試してみましたが、 私がオブジェクトをあまり理解していないせいで、コードの書き方がいまいちわかりませんでした。 よろしくお願い申し上げます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでどうでしょう? まず、フォームを作成し、コマンドボタンを1個配置します コマンドボタンのイベントプロシージャに下記コードを記して下さい ※参照設定で、「MS DAO3.5」を設定して下さい '~~~~~~~~~~~~~~~~~~~~ Private Sub コマンド0_Click() Dim DB As DAO.Database Dim DOC As DAO.Document Dim stMsg As String '削除確認 stMsg = "すべてのフォームを削除しますか?" If MsgBox(stMsg, vbQuestion + vbYesNo) = vbNo Then Exit Sub 'カレントデータベース設定 Set DB = CurrentDb '登録されているフォームの数だけループ For Each DOC In DB.Containers!Forms.Documents '(自分以外の) If DOC.Name <> Me.Name Then 'フォームオブジェクトの削除 DoCmd.DeleteObject acForm, DOC.Name End If Next 'データベース変数解放 Set DB = Nothing End Sub '~~~~~~~~~~~~~~~~~~~~ コマンドボタンを押下すると削除確認が表示され、「はい」を選択するとすべてのフォームは削除されます ただし、自分自身のフォームは残ってしまいますが...(^_^;) 御期待に添えれば・・・
お礼
どうもありがとうございます。 大変助かりました! とてもわかりやすかったです。 ほんとに、どうもありがとうございます。