
VBAです。アクセスです。
Sub test2()
Dim obj As AccessObject
Dim f As Form
For Each obj In CurrentProject.AllForms
Set f = obj.Name
Debug.Print f.Name
色々操作するコード
Next
End Sub
このコードがうまく行かない理由がわからないのです。
Set f = obj.Nameの.Nameで、
「型が一致しません。」のエラーになります。
しかし、Set f = objにすると、
実行時エラー13になります。
オブジェクト型の変数にsetでフォームの名前を入れて、
その後いろいろ操作させるにはどのようにすればよろしいでしょうか?
No.1ベストアンサー
- 回答日時:
ちょっといじってみました。
Set f = obj.Nameでは、オブジェクトに文字列を代入しようとしていますね。
Set f = Forms(obj.Name)なら良いと思いましたが、フォームが開いていないとエラーになりますのでisloadedで判別する必要があります。(これが実行時エラーの原因かも)
であれば、test2()の方は開いているフォームしか対象にならない様なので同じ事かなとも思いました。
ただ、何をなさりたいか分かりませんが、先日別件で調べて知ったばかりですが、フォームのプロパティの操作はデザインモードで開かないと(非表示でも可)出来ない様ですのでご参考までに。
Sub test()
Dim obj As AccessObject
Dim f As Form
For Each obj In CurrentProject.AllForms
If obj.IsLoaded Then
'開いていないとエラーになる
Set f = Forms(obj.Name)
'色々操作するコード
End If
Next
End Sub
Sub test2()
Dim f As Access.Form
For Each f In Access.Forms
'色々操作するコード
Debug.Print f.Name
Next
End Sub
No.3
- 回答日時:
>Dim f As Form
とした場合、f はオブジェクト型の変数ではありません。
オブジェクト型の変数として使用するのであれば
Dim obj As AccessObject
Dim f As Object
For Each obj In CurrentProject.AllForms
Set f = obj
Debug.Print f.Name
色々操作するコード
Next
とします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
MSFormsとは何ですか?
XML
-
-
4
フォーム上の現在アクティブなコントロールの取得
Access(アクセス)
-
5
UserForm1.Showでエラーになります。
工学
-
6
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
7
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
8
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
11
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
12
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
13
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
14
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
15
変数をコントロール型で使用する方法
Visual Basic(VBA)
-
16
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
17
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
18
Access サブフォームでの選択行の取得
その他(データベース)
-
19
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
20
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
UserForm1.Showでエラーになり...
-
Excel vbaについての質問
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
エクセルVBAで埋め込みグラフ(C...
-
【Access】Excelインポート時に...
-
VBA データ(特定値)のある最...
-
Filter関数を用いた結果、何も...
-
レコード登録時に「演算子があ...
-
pythonのopenpyxlについて
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
「実行時エラー '3167' レコー...
-
ACCESS VBAのSplit()関数の使用...
-
実行時エラー'-2147467259(8000...
-
ADO 「認証に失敗しました」
-
エクセル IE VBA 実行時エラ...
-
VB2008 comboboxを連動させた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
String""から型'Double'への変...
-
【Access】Excelインポート時に...
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
ACCESSで値を代入できないとは?
-
VBA エクセル で FIND でのエラ...
-
Filter関数を用いた結果、何も...
-
レコード登録時に「演算子があ...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
「実行時エラー '3167' レコー...
おすすめ情報