アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelのマクロについて、また質問させていただきます。
シートを保護してもマクロが使えるようにしたいのです。

 Selection.Validation.Add Type:= _
 xlValidateList, AlertStyle:= _
 xlvalidalerstop, Operator:= _
 xlBetween, Formula1:="=$A$1"

というようなマクロを作ったとします。
このままなら使えるのですが
シートを保護すると

アプリケーション定義またはオブジェクト定義のエラーです。

と表示されるようになります。
前回質問させていただいたときにアドバイスいただいた
 Validation.Delete
を付けても
状況は変わりません。
 Unprotect password

 Protect userinterfaceonly:=True
を付けても、やはり無理なのです。

マクロについては
まだまだ初心者の域を脱していません。
今回もまた明快なお答えをいただけること
期待しております。

A 回答 (2件)

>起動時にやはりパスワードを入れなくてはいけませんよね。



ブックのパスワードですか?

>文字通り自動的に使えるようにしたいのです。

シートにパスワードを掛けた状態でAuto_Openに
ActiveSheet.Protect userinterfaceonly:=True
とするだけで、パスワード不要でVBAから操作できました。(Excel2000)

この回答への補足

ごめんなさい。
やはりうまくいきません・・・
Excel12002ですが、バージョンは関係ないですよね。
念のため、コピーして貼り付けてみます。

Sub Auto_Open()
ActiveSheet.Protect userinterfaceonly:=True
End Sub
Sub a()
Selection.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$A$1"
End Sub

ここでは改行マークが入っていませんが
もし画面の関係で改行されているとしても
実際はSelectionから"=$A$1"まで1行にしています。

補足日時:2008/03/29 20:28
    • good
    • 0

どのように書いたのか解りませんが・・・。



「Protect userinterfaceonly:=True」は、エクセル起動後、”コード実行前”に別に1度だけ実行する必用があります。(別処理)
通常は、エクセルの自動実行(起動後に自動実行)等で処理します。

あとは、コード内で保護解除と保護を行う方法。

ActiveSheet.Unprotect
'処理
 Selection.Validation.Add Type:= _
 xlValidateList, AlertStyle:= _
 xlvalidalerstop, Operator:= _
 xlBetween, Formula1:="=$A$1"

ActiveSheet.Protect


http://search.goo.ne.jp/web.jsp?status=select&fr …

この回答への補足

回答ありがとうございます。
「ActiveSheet.Unprotect」については
記入する場所を変えたところ
うまく認識するようになりました。
マクロの途中に入れていたことが悪かったようです。
ただ、パスワードは時々変えなくてはならないので
これを使うためにいちいちマクロを変更するのは
やはり面倒かもしれません...

そこで「Protect userinterfaceonly:=True」なのですが
自動実行の「Auto_Open」では
起動時にやはりパスワードを入れなくてはいけませんよね。
パスワードを知らない他の人でも
文字通り自動的に使えるようにしたいのです。
申し訳ありませんが、よろしくお願いいたします。

補足日時:2008/03/26 07:47
    • good
    • 0

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