• ベストアンサー

全てのフォームを閉じるには?

かなり昔の質問を引っ張り出しますがご容赦ください 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 は問題なく行なえます。 フォームは不可能なのでしょうか?

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

> フォームは不可能なのでしょうか? フォームは DAO のメンバーじゃありませんから 同じやり方では出来ないですね。 Sub 全てのフォームを閉じる()   Dim i As Integer   For i = 1 To Forms.Count     DoCmd.Close acForm, Forms(0).Name   Next End Sub

noname#150498
質問者

お礼

DAOのメンバじゃないからなのですね! うまくいきました!ご回答ありがとうございます。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

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

noname#150498
質問者

お礼

私も勉強になりました。 mitarashiさんのほうでもできました。

関連するQ&A