- ベストアンサー
エクセルVBAでコンパイルエラーの原因
- エクセルVBAでコンパイルエラーが発生する原因とは?
- ワークシートの保護を解除するコードでは正常に動作するが、ワークブックの保護を解除するコードではコンパイルエラーが発生する。なぜ?
- VBAを使用してワークシートとワークブックの保護を解除する際に、コンパイルエラーが起こるのはなぜ?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
オブジェクトブラウザーを見たら両方とも戻り値がないとなっているのですが Sub Unprotect([Password]) Excel.Worksheet のメンバー Sub Unprotect([Password]) Excel.Workbook のメンバー ActiveSheetの方に戻り値が出るのが不思議な感じですね。
その他の回答 (3)
- HohoPapa
- ベストアンサー率65% (455/693)
>次にワークブックを保護し、 >同様に下記のコードで保護を解除しようとするとコンパイルエラーになってしまいます。 >同じことをしているはずなのにこれはどうしてでしょか? シートの場合はエラーにならず、 ブックの場合はエラーになるのはなぜか? という疑問であれば、 添付画像のように、VBAの作者がそのような仕様にした。 ということです。 https://docs.microsoft.com/ja-jp/office/vba/api/excel.workbook.unprotect?f1url=%3FappId%3DDev11IDEF1%26l%3Dja-JP%26k%3Dk(vbaxl10.chm199157);k(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue なぜそのような仕様にしたか? という疑問であれば 作者に聞かないとわかりませんし、自信もありませんが、 ブック側の保護強度をより高いものにしようという考えが あったのではないかと推察します。
お礼
ありがとうございました。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
>同じ.Unprotectでなぜ違うのかを知りたいのです。 「偶然、同じ名前で、似たような事をする」ってだけで、中身は全然違うからです。 同じ「タマゴ」でも、鮭のタマゴと鶏のタマゴは違いますよね? 貴方の質問は「鮭のタマゴも鶏のタマゴも同じタマゴだ。何で違うんだ?」という質問と同じです。 その答えは「違うモンは違うモンなんだから諦めろ」です。
お礼
ありがとうございます。 ちがうものはちがうと素直に諦めます。
- f272
- ベストアンサー率46% (8467/18126)
そういう仕様なんでしょね。 bbbbがパスワードのとき ActiveWorkbook.Unprotect("bbbb") なら通ります。
お礼
ありがとうございます。 > bbbbがパスワードのとき > ActiveWorkbook.Unprotect("bbbb")なら通ります。 それはもちろんわかります。 でもx = ActiveWorkbook.Unprotect("bbbb")はエラーになります。 x = ActiveSheet.Unprotect("aaaa")はエラーにならずTRUEを返します。同じ.Unprotectでなぜ違うのかを知りたいのです。
お礼
ありがとうございます。 戻り値が出るのがおかしいわけですね。 勉強になりました。