限定しりとり

AllowDesignChangesがVBAで制御できない理由は?

アクセスのフォームで、
Private Sub Form_Open(Cancel As Integer)
Me.AllowDesignChanges = False 'デザイン変更の許可をしない
End Sub
を実行すると、
実行時エラー"2448" このオブジェクトに値を代入することができません。
になります。

でもAllowDesignChangesのヘルプを見ると、
「"AllowDesignChanges/デザイン変更の許可" プロパティは、
フォームのプロパティ シートまたは Visual Basic を使って設定できます。」
と書いてあります。

という事は、VBAで操作できるって事ですよね?
それなのになぜエラーになるのでしょうか?

A 回答 (2件)

AllowDesignChanges について知らなかったので見てみました。



Private Sub Form_Open(Cancel As Integer)
Me.AllowDesignChanges = False 'デザイン変更の許可をしない
End Sub
↑これは自分自身を変更しようとしているのでエラーになってるかと。

標準モジュール・他のフォーム・イミディエイトウィンドウからなら
変更が出来ます。
イミディエイトウィンドウからは
フォーム 仮に名前を FM とすると
これをフォームビューで開いておいてから
?forms!FM.AllowDesignChanges
でTrue/False の確認が出来ます。
変更するには
デザインビューで開いてから
Docmd.Openform "FM" , Acdesign
forms!FM.AllowDesignChanges = false
のようにすれば可

なお、False にしてもデザインの変更は出来てしまいます? (・・?
何が変更になったのか・・というと
フォームビューの時にプロパティシートが出て来なくなって
その意味で変更不可になるようです。(他にも有るかもしれません)

また、Access2010 では 非表示になって使用が出来なくなりました。
新たに加わったレイアウトビューでやってくれ・・ということの様です。
以下ヘルプより抜粋
Microsoft Office XP (2002) と比較した Microsoft Access 2010 オブジェクト モデルの変更点の要約を次に示します。
メモ
以下の表では、オブジェクト モデルのメンバーの状態が次のように表記されています。

非表示 メンバーは非推奨となっており、コードでの使用はお勧めできません。
削除 メンバーはオブジェクト モデルから削除されました。
変更 メンバーの構文が変更されています。
Form
プロパティ 状態
AllowDesignChanges 非表示
    • good
    • 0
この回答へのお礼

イミディエイトウインドウでも出来るのですか。
バージョンによって変わってくるようですね。

お礼日時:2012/12/18 20:12

> という事は、VBAで操作できるって事ですよね?


> それなのになぜエラーになるのでしょうか?

フォームをデザインビューで開けば可能、ということです。

 DoCmd.OpenForm "フォーム1", acDesign
 With Forms("フォーム1")
  .AllowDesignChanges = False
  ' その他の設定
  ' ・・・
 End With

もちろん、現在フォームビューで開かれているフォームのコードで
フォームをデザインビューで開き直して
自分を変更することはは不可能です。
    • good
    • 0
この回答へのお礼

出来ました。

>現在フォームビューで開かれているフォームのコードで

Form_Openではできませんでした。

お礼日時:2012/12/18 20:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!