プロが教える店舗&オフィスのセキュリティ対策術

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です。

どういう違いなのでしょうか?

A 回答 (2件)

>シート保護のない場合は両方ともOKです。



ActiveSheet.Protect UserInterfaceOnly:=True
ではいかがですか?

http://www.officetanaka.net/excel/vba/sheet/shee …

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
    • good
    • 0
この回答へのお礼

Protect UserInterfaceOnly:=True は存じております。
今回の質問は対策ではなく、そうなる理由なんです。

ありがとうございました。

お礼日時:2006/02/05 12:19

こんにちは。

Wendy02です。

確認しました。私などには、それはわからないですね。

シート保護の中で、オブジェクトにチェックを入れておいて、フォームツールのDropDownのプロパティを「Locked= True」にしておいても、抜けてしまうことですから、それは仕様なのか、MSの製作者の意図は分りません。

今、Ver5 のマニュアルで確認してみましたが、DropDowns(1).Enabled =True/ False という使い方はありますね。

もともと、過去のマクロシートから使われてきたものですから、本来は、シートの保護とは別の存在だったということも想像できます。

シートを保護して、ローカルウィンドウを見ながら比較すると、DropDownsオブジェクトEnabled プロパティは設定できなくなっていますが、個別のプロパティは、設定は可能な状態になっています。

ただし、コレクションで一括設定という目的なら、

最初に、シートの保護前に
Me.DropDowns.Locked = False にしておいてから、一括設定してもよいかと思います。
    • good
    • 0
この回答へのお礼

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

ありがとうございます。

お礼日時:2006/02/06 10:06

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