• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オブジェクト(コントロール)の名前を変更したい)

オブジェクト(コントロール)の名前を変更したい

このQ&Aのポイント
  • 諸事情があり、フォーム上のコマンドボタン40個くらいの名前を変更したいですが、メモリが不足しています。
  • 試しに一つだけ名前を変更してみましたが、うまくいきませんでした。
  • バージョンは2007で、指定のコントロールを追加、名前を変更、または削除することはできません。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答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://okwave.jp/qa/q7888223.html

PVTETEJPB8
質問者

お礼

名前を変更したいコントロールにvbaコードが書いてあったり、 フォーカスが当たる場合は要注意という事ですね。 ん?ん?ん? いまいちよくわからないのですが >当該フォーム以外から実行するのであれば、 コントロール名の変更は可能です。 との事ですが、 Forms("フォーム1")!コマンド0.Name = "あああ" これは、該当フォームから実行してる事にはならないのですか? と思ったら、 >上記のように、「Form_フォーム1.Name」ではなく、 >「"フォーム1"」と定数式を使用すれば、変更が可能になります。 >これは、「Form_フォーム1」を参照すると、 >「フォーム1」が非表示でメモリに読み込まれる >(≒フォームビューで開かれたのに近い状態になる)ためです。 との事なのですね。 要するに Form_フォーム1 と Forms("フォーム1") は別物のようですね。  Forms("フォーム1")形式に変えたらうまくできました。

関連するQ&A