• ベストアンサー

エクセルVBAでフォームの無効化(2)

http://odn.okwave.jp/kotaeru.php3?q=1942213 の質問の追加質問なのですが、 ワークシート上に配置したフォームのコンボボックス(DropDowns)をマクロにて無効とさせる方法です。 シート保護されている場合、 DropDownオブジェクトを個別に指定して Sub TEST3() With ActiveSheet .DropDowns("Drop Down 7").Enabled = False .DropDowns("Drop Down 8").Enabled = False .DropDowns("Drop Down 9").Enabled = False End With End Sub とすると、OKなのですが、コレクションオブジェクトとしてまとめてやろうとして、 Sub TEST4() With ActiveSheet .DropDowns.Enabled = False End With End Sub とするとエラーになります。 シート保護のない場合は両方ともOKです。 どういう違いなのでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。Wendy02です。 確認しました。私などには、それはわからないですね。 シート保護の中で、オブジェクトにチェックを入れておいて、フォームツールのDropDownのプロパティを「Locked= True」にしておいても、抜けてしまうことですから、それは仕様なのか、MSの製作者の意図は分りません。 今、Ver5 のマニュアルで確認してみましたが、DropDowns(1).Enabled =True/ False という使い方はありますね。 もともと、過去のマクロシートから使われてきたものですから、本来は、シートの保護とは別の存在だったということも想像できます。 シートを保護して、ローカルウィンドウを見ながら比較すると、DropDownsオブジェクトEnabled プロパティは設定できなくなっていますが、個別のプロパティは、設定は可能な状態になっています。 ただし、コレクションで一括設定という目的なら、 最初に、シートの保護前に Me.DropDowns.Locked = False にしておいてから、一括設定してもよいかと思います。

merlionXX
質問者

お礼

そういう仕様だということですね。 それならしようがないですね。(笑) ありがとうございます。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>シート保護のない場合は両方ともOKです。 ActiveSheet.Protect UserInterfaceOnly:=True ではいかがですか? http://www.officetanaka.net/excel/vba/sheet/sheet07.htm http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_030_040.html

merlionXX
質問者

お礼

Protect UserInterfaceOnly:=True は存じております。 今回の質問は対策ではなく、そうなる理由なんです。 ありがとうございました。

関連するQ&A