Excelマクロからのシートの編集を許可しているはずなのに試した環境シートの保護機能についてシートを保護した状態でハイパーリンクを削除できない!!マクロからのシートの編集を許可しているはずなのにとあるVBAプログラムを作成していたところ、マクロによる編集を許可しているシート上からマクロでハイパーリンクを削除できない、というバグ?に遭遇したので書き残しておこうと思います。2019シートの保護機能についてExcelのシートに、保護をかけることができるのは有名です。シート保護機能を有効にすると、ユーザーとマクロによる編集からシートを保護することができます。この保護機能、知る人ぞ知る機能として、ユーザーからの編集を保護しつつマクロからは編集可能とするオプションがあります。VBAでこんな風に書きます。userinterfaceonly:=TrueWorksheetsオブジェクトのProtectメソッドを使います。このProtectメソッドには、実は引数がたくさんあり、柔軟に保護の範囲を決めることができるのです。その中の「userinterfaceonly」という引数をTrueにしてあげます。すると、ユーザーによる編集からシートをしっかり保護しながら、マクロによる編集には開かれた状態を作り出すことができるのです。例として、こんなコードを書いてみます。Subこのプログラムを実行後にシートを編集しようとすると・・・このように、警告ウィンドウが出てきます。これで、一見、マクロからの全ての操作が許可されたように見えるのですが、どうやら、マクロ禁止されている(それともバグ?)操作があるようです。シートを保護した状態でハイパーリンクを削除できない!!その禁止されている操作というのが、「マクロでハイパーリンクを削除する」というものです。例として、こんな感じのプログラムを実行してみます。マクロからの編集は有効にしつつ、シートに保護をかけて、セルにハイパーリンクを設定します。その後、そのハイパーリンクを削除するというなんてことはない、プログラムです。Subこれを実行してみると・・・。こんなウィンドウがでてきます。??マクロからの編集が許可されているのではないのか??まぁ、プログラムでハイパーリンクを削除する場面は少ないので影響も小さいのですが・・・。こんなこともあるよねということで、ハイパーリンクの削除は保護中はできないよ!!という話でした。最後までお読みいただき、ありがとうございました。はてなブログProシステム界隈の末端に生息しています。コンピュータに仕事をさせるのが好きです。このブログで紹介している内容は、多分に私見が含まれています。それでも、なるべく正確性を保つよう心がけていますが「それは違うんじゃない?」などのご意見がありましたらご連絡ください。このブログに掲載しているコードは利用規約の範囲で自由にお使いください。当ブログのプライバシーポリシーについてお問合せコードの利用規約にほんブログ村はてなブログをはじめよう!shinmai_papaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。