ログイン画面の基本
Excel VBAで「ユーザー名とパスワードを入力して認証する」仕組みを作ると、簡易的なセキュリティや利用者ごとの制御が可能になります。ここでは ログイン画面(UserFormを使ったログインフォーム) を初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- ログイン画面とは?
UserFormに「ユーザー名」「パスワード」の入力欄を用意し、認証に成功したら処理を進める仕組み。 - 用途:
- 利用者ごとのアクセス制御
- 特定の人だけがデータを編集できるようにする
- 簡易的なセキュリティチェック
- 流れ:
- UserFormに TextBox1(ユーザー名)、TextBox2(パスワード)、CommandButton1(ログインボタン) を配置。
- パスワード欄は
PasswordCharプロパティを設定して「●」表示にする。 - ボタンを押すと入力値をチェック。
- 認証成功なら処理続行、失敗ならエラーメッセージ。
テンプレ1:固定ユーザー名とパスワードで認証
Private Sub CommandButton1_Click()
Dim userName As String, password As String
userName = TextBox1.Value
password = TextBox2.Value
If userName = "admin" And password = "1234" Then
MsgBox "ログイン成功!"
Unload Me
' メイン処理を呼び出す
Call ShowMenu
Else
MsgBox "ユーザー名またはパスワードが違います"
End If
End Sub
VB- ポイント:
- 固定値で認証するシンプルな例。
- 成功時にメニュー画面などを呼び出す。
テンプレ2:シートに登録されたユーザー情報で認証
シート「Users」に以下のような表を用意:
| ユーザー名 | パスワード |
|---|---|
| admin | 1234 |
| user1 | pass1 |
| user2 | pass2 |
UserFormのコード:
Private Sub CommandButton1_Click()
Dim ws As Worksheet: Set ws = Worksheets("Users")
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
found = True
Exit For
End If
Next i
If found Then
MsgBox "ログイン成功!"
Unload Me
Call ShowMenu
Else
MsgBox "ユーザー名またはパスワードが違います"
End If
End Sub
VB- ポイント:
- シートにユーザー情報を管理。
- 新しいユーザーを追加するだけで認証対象を増やせる。
テンプレ3:ログイン失敗回数を制限
Dim failCount As Integer
Private Sub UserForm_Initialize()
failCount = 0
End Sub
Private Sub CommandButton1_Click()
If TextBox1.Value = "admin" And TextBox2.Value = "1234" Then
MsgBox "ログイン成功!"
Unload Me
Else
failCount = failCount + 1
MsgBox "ログイン失敗 (" & failCount & "回目)"
If failCount >= 3 Then
MsgBox "3回失敗したため終了します"
End
End If
End If
End Sub
VB- ポイント:
- 失敗回数をカウント。
- 3回失敗で強制終了。
テンプレ4:ログイン成功後にユーザー名を渡す
Public currentUser As String
Private Sub CommandButton1_Click()
If TextBox1.Value = "admin" And TextBox2.Value = "1234" Then
currentUser = TextBox1.Value
MsgBox currentUser & " さん、ログイン成功!"
Unload Me
Call ShowMenu
Else
MsgBox "ユーザー名またはパスワードが違います"
End If
End Sub
VB- ポイント:
- グローバル変数にユーザー名を保存。
- 後続処理で「誰がログインしたか」を利用できる。
例題で練習
'例1:固定ユーザー名とパスワードで認証
'例2:シートのユーザー情報で認証
'例3:失敗回数制限付きログイン
'例4:ログイン成功後にユーザー名を渡す
VB初心者向けポイント
- パスワード欄は「PasswordChar」で非表示 → セキュリティ感を出せる。
- シートにユーザー情報を持たせると柔軟 → 新規ユーザー追加が簡単。
- 失敗回数制限を入れると安心 → 不正アクセス防止。
- ログイン成功後にユーザー名を渡す → 個別処理に活用できる。
👉 この「ログイン画面テンプレ」を覚えておけば、Excel VBAで 簡易的な認証機能を持つアプリケーション を作成できます。
