天使と悪魔選手権

 非連結のテキストボックスを2つ作成し、そのテキストボックスに、それぞれIDとパスワードを入力することにより「TOP」という名前のフォームを開くログイン用のフォームを作成しています。

・このログイン用のフォーム名は「ログイン」。
・フォームの中にあるID入力用のテキストボックス名は“txtNamePass”
・同じくパスワード入力用のテキストボックス名は“txtCountPass”
・IDとパスワードを入力した後に開くフォームは「TOP]。

 この「ログイン」という名前のフォームにある“txtCountPass”の「更新後処理」の所に以下のコードを記述したところ、IDとパスワードを入力後、「TOP」のフォームは開くのですが、「ログイン」のフォームが閉じないままになってしまいます。
 どのように書き直したらいいか御存知の方がいらっしゃったら御教示下さい。


 Private Sub txtCountPass_AfterUpdate()

Dim TextBoxA As TextBox
Dim TextBoxB As TextBox

Set TextBoxA = Me.txtNamePass ' --- A
Set TextBoxB = Me.txtCountPass

Const NamePass = "@@@@" ' --- B
Const CountPass = "*****"

If TextBoxA = NamePass Then ' --- C
If TextBoxB = CountPass Then ' --- D
DoCmd.OpenForm "TOP" ' --- E
DoCmd.Close , "ログイン"
Else
MsgBox "パスワードが異なります。", vbOKOnly + vbCritical
End If
Else
MsgBox "IDが異なります。", vbOKOnly + vbCritical
End If

End Sub

A 回答 (1件)

> どのように書き直したらいいか



「E」の次の行を、以下のようにしてください:

(現在)
DoCmd.Close , "ログイン"

(修正案1)
DoCmd.Close acForm,"ログイン"
(修正案2)
DoCmd.Close acForm,Me.Name


「Close」の第1引数と第2引数は、双方を省略するか(→アクティブなオブジェクトが閉じられる)、
双方を指定する必要があります。
(今回は、双方を省略すると、アクティブになったばかりの「Top」フォームが閉じられてしまう
 はずなので、双方を指定)

この回答への補足

先程、御教示の通り書き換えたらうまくフォームを閉じることができました!

詳しい説明どうもありがとうございました!

補足日時:2007/09/06 09:55
    • good
    • 0
この回答へのお礼

素早く&適切な回答と解説ありがとうございます。

ファイルは職場のパソコンですので、明日の朝一番に試してみたいと思います。

うまく作動したら回答の受付は締め切らせて頂きます。

取り急ぎお礼まで、ありがとうございました!

お礼日時:2007/09/05 18:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報