top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(22)

シート・セル操作(18)

図形操作(13)

コード自動生成(10)

ユーザーフォーム(9)

文字列操作(8)

設計思想(7)

開発効率化(6)

数学(6)

GAS(5)

アニメーション(5)

技術解説(4)

講座実施報告(5)

イミディエイトウィンドウ(4)

Googleスプレッドシート(4)

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

OneDrive(2)

イベントプロシージャ(2)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

コード生成グループ「シート保護コード」の解説

概要

 書籍「Excel VBA開発を超効率化するプログラミングテクニック」の特典であるIkiKaiso2.xlamのリボン登録マクロの解説のための特設ページです。


出版社の書籍のページ⇒https://gihyo.jp/book/2024/978-4-297-14023-6


リボン登録マクロ全体解説ページ⇒https://www.softex-celware.com/post/ikikaiso2


 本ページではIkiKaiso2.xlamの「コード生成」グループの「シート保護コード」ボタンの使い方を解説します。

シート保護コード

解説

 用途

  表示シートの保護状態を認識して、そのシート保護状態を再現するVBAコードを自動生成する


 使い方

 実際に使っている様子の動画を下記でご確認ください。


 手順は次の通りです

①:対象のシートに任意の設定のシート保護を設定する

②:「シート保護コード」ボタンをクリック

③:設定したシート保護の状態を認識して、そのシート保護状態を再現するコードを自動生成+クリップボードに格納(一緒にシート保護解除のコードも生成しておく)

④:コードウィンドウに適当な所にコードを貼り付け


 動画では良く行うシート保護の設定を行っています。

  • 値の入力は出来ないようにしておく

  • 列幅、行高さの変更は出来るようにしておく

 


 シート保護、保護解除のVBAでの扱い

 事前知識として、VBAでシート保護、保護解除をどのような場面で扱うか?について説明しておきます。


 そもそもシート保護を行う大きな理由として

  • ユーザーに想定外の使い方でExcelシートを壊されないようにする

  • シートの内容はユーザーが変更不可能にする

    というのがあります。

 

 上記のような理由を前提に、保護を設定したシートにVBAで何かしらの書き込みなど内容の変更を行おうとしたときに、その前後でシート保護解除、保護設定を行う必要があります。


 実際のVBAコードの例だと次のようになります。

 下記コードは簡単な例でA1セルだけ値を入力するようにしていますが、実務では対象シートに様々な変更処理を加えたりします。

シート編集前後でのシート保護解除と保護設定

 

 「①シート保護解除⇒②内容変更⇒③シート保護設定」の手順で行っていますが、上記コードの③の処理は結果的に下記のデフォルトのシート保護状態となってしまいます。


 もっとわかりやすく、先ほどのコードの各段階でシートの状態を示すと、次のようになります。

 実行前は人が設定した理想のシート保護状態でしたが、コードを実行後はデフォルトのシート保護状態に戻ってしまいます。さらに、最初に設定したシート保護状態の情報は完全に失われてしまいます。

コードの各段階での保護状態

 「では、どうしたら最初に設定した「列幅、行高さが変更可能なシート保護状態」を設定できるのか?」となりますが、下記画像の様に、Worksheetオブジェクト.Protectメソッドの引数を正しく与える必要があります。

 しかし、このProtectメソッドの引数はあまりにも多くて、これを正確に記述するのはもはや人間技ではありません。

シート保護コードの作成は無理

 この時の「Worksheetオブジェクト.Protectメソッド」の引数を正しく与えるVBAコードを「シート保護コード」によって自動生成できるようになります。

 実際に「シート保護コード」で自動生成されたコードを利用して先ほどのコードを置き換えたものは次のようになります。

自動生成されたコードを利用した場合

 


 「シート保護コード」に頼らない方法

 上記のようなシート保護のVBAコードはVBA開発では避けては通れないような処理ですが、一般的にこれらのシート保護のコードの作成方法も説明しておきます。

 

 具体的な方法は「マクロの記録」を利用する方法で、実際に上記例のような「列幅、行高さ変更可能」なシート保護の設定を行う仮定をマクロの記録でも記録すると、次のようなコードが生成されます。

マクロ記録で生成されたコード

 これで生成されたコードの一部を変更したりして実際にマクロとして利用したりします。

マクロ記録で生成されたコードの編集後

 上記が一般的な「任意のシート保護状態を設定するVBAコードの作成方法」ですが、この方法だと「マクロの記録」「記録されたコードの編集」の作業の手間が発生しますが、今回紹介している「シート保護コード」機能はこの手間なくボタン1つでコードを生成するので、少し効率化に繋がります。

Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page