権限設定の基本
Excel VBAで「ユーザーごとに操作できる範囲を制御したい」「管理者だけが特定の処理を実行できるようにしたい」といった場面では 権限設定 を組み込むと便利です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- 権限設定とは?
ユーザーごとに「できること/できないこと」を制御する仕組み。 - 用途:
- 管理者だけがデータを編集できるようにする
- 一般ユーザーは閲覧のみ可能にする
- 特定の機能を制限する
- 実装方法:
- ユーザー名やパスワードで認証
- 権限レベルを変数やシートに保持
- 処理実行時に権限を判定
テンプレ1:ユーザー権限を変数で管理
Public currentRole As String
Sub SetRole()
Dim inputPwd As String
inputPwd = InputBox("パスワードを入力してください")
If inputPwd = "admin123" Then
currentRole = "Admin"
MsgBox "管理者としてログインしました"
ElseIf inputPwd = "user123" Then
currentRole = "User"
MsgBox "一般ユーザーとしてログインしました"
Else
currentRole = "Guest"
MsgBox "権限なし(閲覧のみ)"
End If
End Sub
VB- ポイント:
- 入力パスワードで権限を判定。
currentRoleに権限レベルを保持。
テンプレ2:権限に応じて処理を制御
Sub EditData()
If currentRole <> "Admin" Then
MsgBox "この処理は管理者のみ実行できます"
Exit Sub
End If
Worksheets("Data").Range("A1").Value = "編集しました"
MsgBox "データを編集しました"
End Sub
VB- ポイント:
If currentRole <> "Admin"で制御。- 管理者以外は処理を拒否。
テンプレ3:シートに権限マスタを持たせる
シート「Roles」に以下の表を用意:
| ユーザー名 | パスワード | 権限 |
|---|---|---|
| admin | 1234 | Admin |
| user1 | pass1 | User |
| guest | guest | Guest |
UserFormで認証:
Public currentRole As String
Private Sub CommandButton1_Click()
Dim ws As Worksheet: Set ws = Worksheets("Roles")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim i As Long, found As Boolean
found = False
For i = 2 To lastRow
If ws.Cells(i, 1).Value = TextBox1.Value And ws.Cells(i, 2).Value = TextBox2.Value Then
currentRole = ws.Cells(i, 3).Value
found = True
Exit For
End If
Next i
If found Then
MsgBox "ログイン成功! 権限: " & currentRole
Unload Me
Else
MsgBox "ユーザー名またはパスワードが違います"
End If
End Sub
VB- ポイント:
- シートにユーザー情報と権限を管理。
- 認証成功時に権限を変数に保持。
テンプレ4:権限に応じてメニューを切り替える
Private Sub UserForm_Initialize()
If currentRole = "Admin" Then
CommandButton1.Enabled = True ' 編集ボタン有効
CommandButton2.Enabled = True ' 削除ボタン有効
ElseIf currentRole = "User" Then
CommandButton1.Enabled = True ' 編集のみ有効
CommandButton2.Enabled = False ' 削除は不可
Else
CommandButton1.Enabled = False
CommandButton2.Enabled = False
End If
End Sub
VB- ポイント:
- 権限に応じてボタンの有効/無効を切り替える。
- メニュー画面と組み合わせると便利。
例題で練習
'例1:パスワードで権限を判定
Sub Example1()
SetRole
End Sub
'例2:管理者のみ編集可能
Sub Example2()
EditData
End Sub
'例3:シートの権限マスタで認証
' → UserFormにコードを記述
'例4:権限に応じてメニュー切り替え
' → UserForm_Initialize にコードを記述
VB初心者向けポイント
- 権限は「変数」で保持するのが基本 →
currentRoleを使う。 - シートにマスタを持たせると柔軟 → ユーザー追加が簡単。
- 処理前に権限チェック →
If currentRole <> "Admin"などで制御。 - UIの有効/無効を切り替える → ボタンやメニューを権限に応じて制御。
- ログイン画面と組み合わせると実用的 → 認証+権限設定で安全性アップ。
👉 この「権限設定テンプレ」を覚えておけば、Excel VBAで ユーザーごとに操作範囲を制御できる安全なアプリケーション を簡単に作成できます。
