• ベストアンサー

エクセルVBAを用いてログインページを作りたいです

ログイン用のフォームには,名前とパスワードを入力するテキストボックスとログインボタンが配置されているとします. また,エクセルのAという名前のシート上には,名前とパスワードのデータベースが存在するとします. 例えば,名前が佐藤,パスワードがabcdefの人が存在したとします. この人がログイン用のフォームに入力を行った際に,入力内容がデータベースと一致し,正しければ佐藤という名前のシートへと遷移し,かつ他の項目を入力するための別のフォーム(ここでは仮にFというフォームとする)にも遷移するようなコードを書きたいのですが,どなたか御教示ください.よろしくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは。 "ログイン用のフォーム"とか"別のフォーム(ここでは仮にFというフォームとする)" "フォーム"というだけの用語の扱い方では、何を指しているのかが微妙です。 Visual BasicやAccessのお話だったり? Excelだとしてもシート上のフォームコントロールやマクロシートのお話だったり? 私にはピンと来ないのですが、解る人にはコレと判るものなのでしょうか^^; 「最終的にExcelを操作する」「Excelカテゴリへの質問」という2点から類推して Excel VBA で ユーザーフォーム を扱うお話、と判断しましたが、 見当外れな話でしたら、私がお応えするものは他にありませんので 悪しからず、以降は無視してくださいませ。 〓以下、実際に作成したテスト用サンプルブックの概要です。   ログイン用のフォーム  UserForm1     名前を入力するテキストボックス  TextBox1     パスワードを入力するテキストボックス  TextBox2     ログインボタン  CommandButton1   別のフォーム (ここでは仮にFというフォームとする)  UserForm2   エクセルのAという名前のシート(※1  ThisWorkbook.Sheets("A")     データベース  ThisWorkbook.Sheets("A").Range("A:B")  タイトル一行       名前  ThisWorkbook.Sheets("A").Range("A:A")       パスワード(※2  ThisWorkbook.Sheets("A").Range("B:B")   他、名前が登録されている分だけの沢山のシート  ThisWorkbook.Sheets("名前") (※1 "エクセルのAという名前のシート"という説明だけでは、     どのブックにあるシートなのか判らないので、、     ココでは仮に、自ブック(=ThisWorkbook)="ログイン用のフォーム"の親ブック     という設定にしています。 (※2 数字だけで構成されたパスワードがあったとしても、     セルに登録する際は、必ず、【文字列値】として登録してある     というのが、今回の動作条件です。 〓 一応、ご質問で例示されたオブジェクトに対して、 こちらでテスト用(動作確認用)に仮に付けた名前や条件設定、 をメモしておきました。 これだけ準備すれば、 仮に、私が提示するスクリプトをそちらでの実情に合わせて修正することが難しかったとしても、 新規のブックで簡単に内容(動作)を確認することが出来るようにと、という意図で書いています。 何れにして動かしてみた上で何かこちらの誤解があるようでしたらば、補足ください。 〓以下、上記条件で動作確認した、Excel VBA UserForm1 モジュールの(CommandButton1)記述内容です。 ' /// Private Sub CommandButton1_Click() ' #repW9044949 Dim vName, vPW, vRtn   vName = TextBox1.Value   If vName = "" Then MsgBox "名前を入力", vbExclamation: Exit Sub   vPW = TextBox2.Value   If vPW = "" Then MsgBox "パスワードを入力", vbExclamation: Exit Sub   With ThisWorkbook.Sheets("A")     vRtn = Application.VLookup(vName, .Range("A2:B" & .Cells(Rows.Count, "A").End(xlUp).Row), 2, 0)   End With   If IsError(vRtn) Then MsgBox "指定された名前は未登録", vbExclamation: Exit Sub   If vRtn <> vPW Then MsgBox "パスワードが違います", vbExclamation: Exit Sub   Me.Hide   On Error GoTo NotExist_   With ThisWorkbook.Sheets(vName)   On Error GoTo 0     .Visible = xlSheetVisible     .Select   End With   With UserForm2     .Caption = vName     .Show   End With Out_:   Exit Sub NotExist_:   MsgBox "認証は成功しましたが" & vbLf & "シート '" & vName & "'が存在しません", vbExclamation   Resume Out_ End Sub ' /// UserForm1 の各コントロールの初期化は省略します。

obameyan
質問者

お礼

返信が遅くなってしまい申し訳ありません。 私の拙い説明から、汲み取っていただきありがとうございます。 まさに私の書きたかったコードでした。 またわからない事などがあった際には質問するかと思いますので、よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A