- ベストアンサー
全てのフォームを閉じるには?
かなり昔の質問を引っ張り出しますがご容赦ください http://oshiete1.goo.ne.jp/qa4158345.html のように 今度はフォームを閉じたいのですが Sub 全てのフォームを閉じる() Dim フォーム As DAO.QueryDef For Each フォーム In CurrentDb().FormDefs DoCmd.Close acForm, フォーム.Name Next End Sub で、デバッグすると 「.FormDefs」の部分が ”コンパイルエラー メソッドまたはデータ メンバが見つかりません。 (Error 461)” になってしまいます。 Sub QueryAllClose() Dim Q As DAO.QueryDef For Each Q In CurrentDb().QueryDefs DoCmd.Close acQuery, Q.Name Next End Sub は問題なく行なえます。 フォームは不可能なのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> フォームは不可能なのでしょうか? フォームは DAO のメンバーじゃありませんから 同じやり方では出来ないですね。 Sub 全てのフォームを閉じる() Dim i As Integer For i = 1 To Forms.Count DoCmd.Close acForm, Forms(0).Name Next End Sub
その他の回答 (1)
- mitarashi
- ベストアンサー率59% (574/965)
bonaronさん、勉強になりました。普通にループを回しても全部消えないのですが、背番号が都度付け変わるからなのですね。 Forms(0)がミソですか。エクセルの行削除と一緒で、最後からループを回すと全部消えました。 Sub test() Dim i As Long For i = Forms.Count - 1 To 0 Step -1 DoCmd.Close acForm, Forms.Item(i).Name Next i End Sub
お礼
私も勉強になりました。 mitarashiさんのほうでもできました。
お礼
DAOのメンバじゃないからなのですね! うまくいきました!ご回答ありがとうございます。