Excel VBA 逆引き集 | ログイン画面

Excel VBA
スポンサーリンク

ログイン画面の基本

Excel VBAで「ユーザー名とパスワードを入力して認証する」仕組みを作ると、簡易的なセキュリティや利用者ごとの制御が可能になります。ここでは ログイン画面(UserFormを使ったログインフォーム) を初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • ログイン画面とは?
    UserFormに「ユーザー名」「パスワード」の入力欄を用意し、認証に成功したら処理を進める仕組み。
  • 用途:
    • 利用者ごとのアクセス制御
    • 特定の人だけがデータを編集できるようにする
    • 簡易的なセキュリティチェック
  • 流れ:
    1. UserFormに TextBox1(ユーザー名)TextBox2(パスワード)CommandButton1(ログインボタン) を配置。
    2. パスワード欄は PasswordChar プロパティを設定して「●」表示にする。
    3. ボタンを押すと入力値をチェック。
    4. 認証成功なら処理続行、失敗ならエラーメッセージ。

テンプレ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」に以下のような表を用意:

ユーザー名パスワード
admin1234
user1pass1
user2pass2

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で 簡易的な認証機能を持つアプリケーション を作成できます。

タイトルとURLをコピーしました