top of page

​タグ一覧

配列処理(67)

階層化フォーム(33)

ファイル操作(23)

シート・セル操作(11)

コード自動生成(10)

ユーザーフォーム(8)

図形操作(7)

GAS(5)

アニメーション(5)

技術解説(4)

副業(4)

考え方(4)

条件付き書式(4)

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

Enum(3)

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

ココナラ(3)

クリップボード(3)

介護(3)

開発効率化(2)

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

PDF(2)

フリーランス(2)

リスキリング(2)

Excel(2)

Excel小ネタ(2)

数学(2)

Outlook(2)

文字列操作(2)

小説(2)

HTML(2)

JavaScript(2)

日報(2)

カレンダー(2)

パズル(2)

ステータスバー(1)

コード解析(1)

静的変数(1)

OneDrive(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

六角形(1)

Excel遊び(1)

ボウリング(1)

時計(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

イベント(1)

溶接ロボット(1)

VBA(1)

脱Excel(1)

Discord(1)

ECサイト(1)

CSV(1)

楽天(1)

保育士(1)

シフト表(1)

CDP(1)

楽天市場(1)

経理(1)

javascript(1)

医療(1)

文書作成(1)

LookerStudio(1)

シフト(1)

セキュリティ(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

罫線(1)

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

ライブラリ処理(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つでコードを生成するので、少し効率化に繋がります。

コメント

5つ星のうち0と評価されています。
まだ評価がありません

評価を追加
Softex-Celware

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page