質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

2322閲覧

ユーザーごとにフォームを設定したい

abcs

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/02/19 02:31

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
会社ごとにID・PWを設定し、開くフォームをそれぞれ設定したいです。
現在ネットから引っ張ってきたVBAを入れておりますが、全くVBAが未知、初心者です。
ID・PWが入っているテーブル内で一致すれば◯◯が開く。というのはわかるのですが
ID・PWが入っているテーブルの◯◯会社IDでログインしたら◯◯フォーム。
✕✕会社IDでログインしたら✕✕フォーム。というように作りたいです。

現在のVBA

Private Sub コマンド10_Click()
Dim Res
If IsNull(Me.txtID) Then
MsgBox "IDを入力してください"
Me.txtID.SetFocus
Exit Sub
End If

If IsNull(Me.txtPass) Then
MsgBox "パスワードを入力してください"
Me.txtPass.SetFocus
Exit Sub
End If

Res = DLookup("Pass", "ユーザー別ID・PWテーブル", "LoginID='" & Me.txtID & "'")
If IsNull(Res) Then
MsgBox "該当するIDはありません。正しいIDを入力してください。"
Me.txtID.SetFocus
Exit Sub
End If

If Res = Me.txtPass Then
DoCmd.OpenForm "○○会社"
DoCmd.Close acForm, "ログイン画面"
Else
MsgBox "パスワードが異なります。", vbOKOnly + vbCritical
Me.txtPass.SetFocus
End If
End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

質問内容が不明瞭なので、やりたい事と一致しているか疑問ですが、ログインIDの内容で開くフォームを切り替えたいのだと解釈しました。

VBA

1If Res = Me.txtPass Then 2 If Me.txtID = "◯◯会社ID" 3 DoCmd.OpenForm "○○会社" 4 else 5 DoCmd.OpenForm "✕✕会社" 6 End If 7 DoCmd.Close acForm, "ログイン画面" 8Else 9 MsgBox "パスワードが異なります。", vbOKOnly + vbCritical 10 Me.txtPass.SetFocus 11End If

分岐が多いなら、[Select Case ステートメント](https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/select-case-statement?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dja-JP%26k%3Dk(vblr6.chm1008810)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)を使用するとすっきりします。

VBA

1If Res = Me.txtPass Then 2 Dim wフォーム名 3 Select Case Me.txtID 4 case "AAA" 5 wフォーム名 = "A社フォーム" 6 case "BBB" 7 wフォーム名 = "B社フォーム" 8 case "CCC" 9 wフォーム名 = "C社フォーム" 10 End Select 11 DoCmd.OpenForm wフォーム名 12 DoCmd.Close acForm, "ログイン画面" 13Else 14 MsgBox "パスワードが異なります。", vbOKOnly + vbCritical 15 Me.txtPass.SetFocus 16End If

投稿2020/02/19 07:09

編集2020/02/19 09:06
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

abcs

2020/02/19 07:54

質問が雑で申し訳ございません、、 【会社別ID・PWテーブル】 [社名] [ID]  [PW]   [表示フォーム]  A社  AAA  1111  A社顧客フォーム B社  BBB  2222  B社顧客フォーム C社  CCC  3333  C社顧客フォーム ログイン画面にID・PW入力設定をし、それぞれのID・PWを入れると 指定したフォームのみ表示させるということです。
sazi

2020/02/19 08:31

追記しました
abcs

2020/02/19 08:59

うわーーー!知識3%くらいなのでめちゃくちゃ興奮してます!wできました!有難うございます!!
guest

0

こんにちは。よろしくおねがいいたします。
ものすご~く簡単なものを作ってみました。

今、このようなシートに、各種の定義がしてあるとします。
そして、このシートに書いてあるように、FORM_AやFORM_Bとかが作ってあるものとします。

イメージ説明

それで、これを利用するVBAコードは、以下のようなものです。

VBA

1Option Explicit 2 3Sub IDPWMatch_And_OpenForm() 4 5Dim MyID As String 6Dim MyPW As String 7 8Dim MyFormName As String 9 10MyID = Application.InputBox("IDを入力してください") 11MyPW = Application.InputBox("PWを入力してください") 12 13Dim SearchRange As Range 14Dim FoundIDPWSet As Range 15 16'IDPWとその対象のフォーム名を定義した範囲です 17Set SearchRange = ThisWorkbook.Worksheets("IDPWリスト").Range("D2", Range("D2").End(xlDown)) 18 19'Findを使ってサーチします 20Set FoundIDPWSet = SearchRange.Find(what:=MyID & MyPW, lookat:=xlWhole) 21 22If FoundIDPWSet Is Nothing Then 23 MsgBox "IDとPWが間違っています" 24Else 25 '検索でヒットしたセルの右のセルにあるフォーム名を得ます 26 MyFormName = FoundIDPWSet.Offset(0, 1).Value 27 'そのフォーム名のフォームを開きます 28 UserForms.Add(MyFormName).Show 29End If 30 31End Sub 32

これでたとえばA株式会社のID/PW、"AAAAA"と"11111"を、インプットボックスで入力してあげると、

イメージ説明

このように該当のフォームが開きます。

※本当に業務に使う場合は、こんな雑なのではダメでしょうね。セキュリティ対策をちゃんと行ってくださいね。

投稿2020/02/19 03:46

AkiSaito

総合スコア110

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2020/02/19 03:50

質問はAccessですよ。
AkiSaito

2020/02/19 04:44

あぁ本当だ。気が付きませんでした。失礼いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問