• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでコンパイルエラーの原因)

エクセルVBAでコンパイルエラーの原因

このQ&Aのポイント
  • エクセルVBAでコンパイルエラーが発生する原因とは?
  • ワークシートの保護を解除するコードでは正常に動作するが、ワークブックの保護を解除するコードではコンパイルエラーが発生する。なぜ?
  • VBAを使用してワークシートとワークブックの保護を解除する際に、コンパイルエラーが起こるのはなぜ?

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

オブジェクトブラウザーを見たら両方とも戻り値がないとなっているのですが Sub Unprotect([Password]) Excel.Worksheet のメンバー Sub Unprotect([Password]) Excel.Workbook のメンバー ActiveSheetの方に戻り値が出るのが不思議な感じですね。

emaxemax
質問者

お礼

ありがとうございます。 戻り値が出るのがおかしいわけですね。 勉強になりました。

その他の回答 (3)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

>次にワークブックを保護し、 >同様に下記のコードで保護を解除しようとするとコンパイルエラーになってしまいます。 >同じことをしているはずなのにこれはどうしてでしょか? シートの場合はエラーにならず、 ブックの場合はエラーになるのはなぜか? という疑問であれば、 添付画像のように、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 なぜそのような仕様にしたか? という疑問であれば 作者に聞かないとわかりませんし、自信もありませんが、 ブック側の保護強度をより高いものにしようという考えが あったのではないかと推察します。

emaxemax
質問者

お礼

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

回答No.3

>同じ.Unprotectでなぜ違うのかを知りたいのです。 「偶然、同じ名前で、似たような事をする」ってだけで、中身は全然違うからです。 同じ「タマゴ」でも、鮭のタマゴと鶏のタマゴは違いますよね? 貴方の質問は「鮭のタマゴも鶏のタマゴも同じタマゴだ。何で違うんだ?」という質問と同じです。 その答えは「違うモンは違うモンなんだから諦めろ」です。

emaxemax
質問者

お礼

ありがとうございます。 ちがうものはちがうと素直に諦めます。

  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

そういう仕様なんでしょね。 bbbbがパスワードのとき ActiveWorkbook.Unprotect("bbbb") なら通ります。

emaxemax
質問者

お礼

ありがとうございます。 > bbbbがパスワードのとき > ActiveWorkbook.Unprotect("bbbb")なら通ります。 それはもちろんわかります。 でもx = ActiveWorkbook.Unprotect("bbbb")はエラーになります。 x = ActiveSheet.Unprotect("aaaa")はエラーにならずTRUEを返します。同じ.Unprotectでなぜ違うのかを知りたいのです。