【VBA】シートの保護を解除と再設定する方法

こんにちは!大阪市住之江区に拠点を置く会社『縁紡ぐ』の稲垣です。

当社は、Excel、ACCESS、RPAなどのシステム開発や既存ツールを使った業務効率化の提案、また、ITスキルアップのための教育に力を入れています。効率的なビジネス運営を目指している企業様、ITスキルの向上を図りたい企業や個人の方に、最適なご提案をさせていただきます。業務プロセスの改善とITスキルアップをサポートし、共に成長するパートナーでありたいと考えています。

目次

【VBA】シートの保護を解除と再設定する方法

Excelでシステムを作成する時に便利なのが、シートですよね!でも、この便利なシートですが、ユーザーが間違ったり勝手に変更しちゃうって、動かなくなってしまう😭って、ことが起きやすいのがデメリット。

VBA処理でもシートの保護は有効

シートをユーザーが変えてしまわないようにするため、シートの保護をかけることで防ぐことができます。が、シートの保護の機能は、VBAでセルに変更を行うときにも保護の対象になります。

はい、このようにVBAでシートの値を変更しようとしたらエラーとなりました。

シートの保護解除

対応方法は、書き込みする前にシートの保護を解除することです。シートを解除するコードはこちらです。

Sub UnprotectSheet(sheetName As String, Optional password As String = "")
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(sheetName)
    
    If password <> "" Then
        ws.Unprotect Password:=password
    Else
        ws.Unprotect
    End If
End Sub

引数として、シート名とパスワードを受取っています。パスワードをせずに保護している場合は、パスワードなしで、Unprotectで解除することができます。

呼び出す方法は、下の通りです。

モジュール名.UnprotectSheet "シート名", "パスワード"

シートの保護を設定

忘れていけないのは、解除したシートの保護を最後に設定することです。

Sub ProtectSheet(sheetName As String, Optional password As String = "")
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(sheetName)
    
    If password <> "" Then
        ws.Protect password:=password
    Else
        ws.Protect
    End If
End Sub

引数として、シート名とパスワードを受取っています。パスワードなしで、保護する場合は、Protectで設定することができます。

呼び出す方法は、以下の通りです。

 モジュール名.ProtectSheet "シート名", "パスワード"

まとめ

シートを部分的にユーザーに編集可能とする方法として、シートの保護が有効です。ご紹介した方法で、VBAでも編集ができより使いやすいシステムを作成することができると思います。

ぜひ、ご活用くださいね!

記事を書いた人

稲垣

  • Excel、ACCESSでのシステム開発が得意
  • ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
  • 自家焙煎するほどのコーヒー好き
  • 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
  • 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
  • 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
  • お客様にとって本当に良いことかを第一に考える人
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次