• ベストアンサー

エクセル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

  • 画面遷移について(SQL,SELECT)

    概要です。 VisualBasic2010にてフォーム1(ログイン画面)→フォーム2(メニュー画面) を作成しようとしております。 現在の構成です。 ・ログイン画面 ・メニュー画面 ・ユーザー名とパスワードが入力されたテーブル(SQLサーバーで作成(ローカルデータベース) 質問です。 ログイン画面にユーザー名とパスワードのテキストボックスを設けているのですが、 ログインするボタンを押下したときに、ログイン画面に入力したユーザー名と パスワードのテキストボックスでテーブルを検索して、ユーザー名とパスワードが一致 したらメニュー画面に遷移し、一致しなかったらエラーメッセージボックスを出したいの ですが、どういったコードを書けば良いかわかりません。 また試行錯誤して、ボタンクリックイベントでSELECT文を書いて、取得した レコードの一部を抜き出してユーザー名とパスワードを比較させようとしても コードがわかりませんでした。 わかりにくい文かもしれませんが、ご回答よろしくお願いします。

  • エクセルVBAで困ってます。

    ユーザーフォームのテキストボックスで入力制限をしたいのですが、制限は桁とかではなく特定の数字です。そこでテキストボックスに入力後チェックをかけるコーディングをしてるつもりなのですがフォーカスが次のテキストボックスへ遷移してしまいます。フォーカスを自分自身へ戻せないものでしょうか。大変困っています宜しくお願いします。

  • Excel VBA 条件検索について

    ExcelVBAで 「データ検索後リスト表示をして、そのリストから該当するシートを選べば表示される」 というユーザーフォームを作成したいのですが、やり方がよく解りません。どなたか教えて下さい。 具体的には 「コマンドボタンが押された時に、ユーザーフォーム内のテキストボックスに入力された値(名称、日付等)と、複数のシート内のセルの値(名称、日付等)を比較して、一致(全一致、一部一致)した場合、ユーザーフォーム内のリストボックスに表示させる」 というものと 「リストボックスに表示されたものの中から見たいシートを選択すると、そのシートを表示する」 というものです。 リストの表示形式は シート名   名称  日付等 Sheet1    りんご  2013.01.01 Sheet2    りんご  2013.01.02 という具合にしたいと思っています。 ちなみに複数のシートと言いましたが、マスターシートを作りコピーして使用しますので、同一形式のものになります。 以上になります。 色々やってみましたが、うまくいきませんので、どなたか解る方は教えて下さい。 よろしくお願いします。

  • エクセル(VBA)でリストボックス等を使用した印刷方法

    エクセルのフォームのリストボックス等を使用して、選んだシートのみを印刷することは出来るのでしょうか。(VBAを使用して) 現状 ・シートが15枚あります(シート1,2,3,4は条件入力用でシート5~15は様式でシート5~15は非表示です) ・シート1にリストボックスを配置したいです(リストボックスの選ぶ名前はシート5~15です) 例として ・リストボックスでシート7を選んだときに、シート7を印刷したいです その他 ・リストボックスでなくても、選んだシートが印刷される方法が他にあるのであれば、他の方法でもかまいません。

  • ログイン画面作成

    ASP.NETの初心者ですが、ログイン画面の作成取り掛かっています。 しかし、プログラミングの部分まったく進みません。。 機能としては、 初回起動のときデータベースとの接続を行う。 接続成功の場合はログイン画面を表示する。 失敗の場合はエラーメッセージを表示する。 ログインボタン押下 ユーザID入力あり チェック:半角や桁数チェック(false) エラーメッセージ パスワード入力あり チェック:半角や桁数チェック(false) エラーメッセージ DBに登録されているユーザIDとパスワードと一致するとき セッション変数に ユーザIDの値を設定する。 次の画面(メニュー)に遷移する。 一致しなかった場合 ログイン画面に最遷移 環境は.NET2003 DB: Access 言語VB 大体でいいですが、どういうふうにやるのか教えていただけませんか よろしくお願いします。

  • ExcelのVBA

    Excelで、データベースを作成したいと思っています。 新規レコード入力時に、ユーザーフォームを使って入力したいのですが、 ユーザーフォームに入力したデータを、新規レコードとしてシートに保存する方法を教えて下さい。 例えば、住所録で10件のデータが入力されている。 新しい住所データをフォームを使って入力し、指定のボタンをクリックすれば、 11件目としてシートの最後尾(11番目)に保存される。 といった具合です。

  • EXCELで入金処理を!(出直してみました)

    受注No. - 枝番 現場名  入金日 A12300 - 01 佐藤様  07/05/05 A12500 - 01 田中様       A12300 - 02 佐藤様       D14600 - 01 木村様  07/05/03 A14700 - 01 松本様         (excelワークシート) 以上のようなデータベースから No.がA12300かつ枝番が02を抽出し、"佐藤様"を呼び出す方法を教えてください。このデータベースは次々と追加されていきます。 excelで作ってます。No.(No)と枝番(eda)をそれぞれユーザーフォームのテキストボックスに入力し検索ボタン(Sarch)を押してサーチし、抽出された値をユーザーフォームのラベル(genba)に表示し、また、入金日(Hiduke)をテキストボックスに入力して登録ボタン(Touroku)を押すと入力された日付がワークシートの該当するセルに反映されるようにしたいのですが。 説明が下手ですみません。 自分なりに頑張って書きましたので宜しくお願いします。

  • Excel VBAで比較させたい。

    sheet1のA1に山田さん、B1に佐藤さんと打ちます。 で、sheet2のA列に山田さんB列に佐藤さんの情報があります。 それを比較する方法を知りたいんですけど。 ちなみに、sheet1のA1に鈴木さん、B1に山崎さんなど色んなパターンが存在します。 A1に山田さんだったらsheet2のA列、B1に佐藤さんだったらsheet2のB列を見に行って それを比較して、一致しない所だけsheet3に表示させる方法などありますか? 当方まったくの初心者で…(^^;

  • Excel VBA リストボックスのクリア(Win2000、Office2000)

    Worksheets("Sheet1")に60個程度のTextBoxとComboBoxが並んでいます。(ユーザーフォーム上ではなく、シート上に配置) この各ボックスに入力された値を、ファイルを開いた時(OpenEvent)で入力されている値を消したいのですが、どうしたらよいでしょうか?(終了時でも構いません) 宜しくお願い致します。

  • ログイン後・・・

    こんにちは。サイトを作っているperl初心者です。 TOPページからログインして、メイン画面を表示させたいのですが、つまづいてます。 使用している言語はperl5、データベースはmysql4です。 今「TOPページのcgiのログインフォームからデータを取り、mysqlに接続してデータベースのデータ(id、パスワード)を検索し、 一致するデータがあれば仮にテーブルにして表示させる」ところまではできています。 このテーブルを表示せずに、メイン画面を表示させるためにはどうすればよいのでしょうか? くだらない質問でしょうが、よろしければ回答を。 よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう