諸事情があり、フォーム上のコマンドボタン40個くらいの名前を変更したいのですが
まず、一つだけ変更できるか実験してみたのですがうまくできません。
Sub オブジェクト名変更()
DoCmd.OpenForm Form_フォーム1.Name, acDesign
Form_フォーム1.コマンド0.Name = "あああ"
DoCmd.Save acForm, Form_フォーム1
End Sub
を実行すると
メモリが不足しています。(Error 7)
と出たり、
実行時エラー 29054
指定のコントロールを追加、名前を変更、または削除することはできません。
と出たりします。
これって無理って事でしょうか?
バージョンは2007です。
No.1ベストアンサー
- 回答日時:
> これって無理って事でしょうか?
当該フォーム以外から実行するのであれば、コントロール名の変更は可能です。
ただ、そのコントロールの各イベントにコードを割り当てていたり、コード上でそれらを
参照していた場合、名前が一致しなくなるため、注意が必要です。
(「Private Sub コマンド0_Click」が呼び出せなくなったり、「コマンド0.SetFocus」が
コンパイルエラーになったり、といった事態になります)
以下のコードを適用する際は、以上の注意事項を踏まえた上で行ってください。
(なお、以下のコードでは、フォームを閉じる際に、確認メッセージなしで変更を保存
させるよう、DoCmd.Closeの第3引数に「acSaveYes」を指定していますので、
併せてご注意下さい)
Public Sub オブジェクト名変更()
DoCmd.OpenForm "フォーム1", acDesign
Forms("フォーム1")!コマンド0.Name = "あああ"
DoCmd.Close acForm, "フォーム1", acSaveYes
End Sub
上記のように、「Form_フォーム1.Name」ではなく、「"フォーム1"」と定数式を
使用すれば、変更が可能になります。
これは、「Form_フォーム1」を参照すると、「フォーム1」が非表示でメモリに
読み込まれる(≒フォームビューで開かれたのに近い状態になる)ためです。
このため、せっかくデザインビューで開く指定をした意味がなくなってしまって
います。
(DoCmd.OpenFormで開くのとは異なり、「Form_フォーム1」の形で参照すると、
同じフォームを同時に複数表示が可能になるため、このようなことが起こります)
詳細については、以前のQ&Aを参照してみてください:
http://oshiete.goo.ne.jp/qa/7888223.html
名前を変更したいコントロールにvbaコードが書いてあったり、
フォーカスが当たる場合は要注意という事ですね。
ん?ん?ん?
いまいちよくわからないのですが
>当該フォーム以外から実行するのであれば、
コントロール名の変更は可能です。
との事ですが、
Forms("フォーム1")!コマンド0.Name = "あああ"
これは、該当フォームから実行してる事にはならないのですか?
と思ったら、
>上記のように、「Form_フォーム1.Name」ではなく、
>「"フォーム1"」と定数式を使用すれば、変更が可能になります。
>これは、「Form_フォーム1」を参照すると、
>「フォーム1」が非表示でメモリに読み込まれる
>(≒フォームビューで開かれたのに近い状態になる)ためです。
との事なのですね。
要するに
Form_フォーム1
と
Forms("フォーム1")
は別物のようですね。
Forms("フォーム1")形式に変えたらうまくできました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
ACCESSフォームにコントロールが追加できない
Access(アクセス)
-
Excelマクロでオプションボタンの名前の変更をしたい
Excel(エクセル)
-
-
4
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
5
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
6
コントロールの存在確認
Visual Basic(VBA)
-
7
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
8
ACCESS フォームからサブフォームのデータを更新・入力したい
Access(アクセス)
-
9
Access 別フォームへの再クエリ(更新)がしたい。
その他(データベース)
-
10
アクセス 壊れた? 「ファイルが見つかりません」
Access(アクセス)
-
11
YES/NO型の値
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAのフォームを最...
-
ユーザーフォームを表示中にシ...
-
ユーザーフォームのテキストボ...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
Excel VBAでユーザーフォームだ...
-
アクセス2013 フォームが...
-
Excel VBAで別のブックからユ...
-
コントロールの存在確認
-
テキストボックスやラベルのクリア
-
モーダルフォームとモードレス...
-
VBA(エクセル)のユーザー...
-
VBAでユーザーフォームを再表示...
-
Microsoft Formsの「個人情報や...
-
テキストボックスの番号の取得
-
Form_Load と Form_Activate の...
-
C#でボタンクリックをキャンセル
-
Access VBA コントロールの参照...
-
'ユーザーフォーム右上隅の[×...
-
VBA ユーザーフォームを速く開...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
エクセルVBAのフォームを最...
-
クリックイベントなのに、2回ク...
-
VBAでユーザーフォームを再表示...
-
ユーザーフォームのテキストボ...
-
コントロールの存在確認
-
モーダルフォームとモードレス...
-
Form_Load と Form_Activate の...
-
Hideについて(.NET)
-
Microsoft Formsの「個人情報や...
-
VBA(エクセル)のユーザー...
-
MSGBOXのフォント大きさ変更
-
ACCESSのフォーム、開くんです...
-
Access VBA コントロールの参照...
-
Excelにて、ユーザーフォームで...
-
フォームウィンドウを最前面に...
-
ユーザーフォーム上に現在日時...
-
エクセルのVBAでユーザーフォー...
-
'ユーザーフォーム右上隅の[×...
おすすめ情報