[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/12/06(Mon) 16:22
投稿者名:NAO
Eメール:
URL :
タイトル:
Validateイベントについて
みなさんこんにちは。初めて投稿します。
よろしくお願いします。

FORMにテキストボックス1と2が2つあります。
両方ともCausesValidation プロパティはtrueにしています。
フォーカスは、テキストボックス1から2へ移る処理です。

テキストボックス1にLostFocusとValidateイベントを書いているのですが、
テキストボックス1にフォーカスがある時、Tabキーを押すと
Validateイベントが発生して、次にLostFocusが動きます。
Enterキーを押すとLostFocusが動いて、Validateイベントが発生します。
どうしてこうなるのか分かりません。

もしどなたかご存知の方、教えて下さい。
よろしくお願いします。

投稿時間:2004/12/06(Mon) 21:07
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re: Validateイベントについて
> みなさんこんにちは。初めて投稿します。
> よろしくお願いします。
>
> FORMにテキストボックス1と2が2つあります。
> 両方ともCausesValidation プロパティはtrueにしています。
> フォーカスは、テキストボックス1から2へ移る処理です。
>
> テキストボックス1にLostFocusとValidateイベントを書いているのですが、
> テキストボックス1にフォーカスがある時、Tabキーを押すと
> Validateイベントが発生して、次にLostFocusが動きます。
> Enterキーを押すとLostFocusが動いて、Validateイベントが発生します。
> どうしてこうなるのか分かりません。

Enterキーを押しても、普通はLostFocusやValidateイベントは発生しません。
KeyPressやKeyDownイベントに何かコードを書いてませんか?

投稿時間:2004/12/07(Tue) 08:44
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^2: Validateイベントについて
返事ありがとうございます。
確かにEnterキーを押した場合、Validateイベントは発動しません
でしたが、LostFocusは発動していました。
Enterキーを押した場合に、Validateイベントを発動させる方法は
ありますでしょうか。
ご存知でしたら教えて下さい。







> > みなさんこんにちは。初めて投稿します。
> > よろしくお願いします。
> >
> > FORMにテキストボックス1と2が2つあります。
> > 両方ともCausesValidation プロパティはtrueにしています。
> > フォーカスは、テキストボックス1から2へ移る処理です。
> >
> > テキストボックス1にLostFocusとValidateイベントを書いているのですが、
> > テキストボックス1にフォーカスがある時、Tabキーを押すと
> > Validateイベントが発生して、次にLostFocusが動きます。
> > Enterキーを押すとLostFocusが動いて、Validateイベントが発生します。
> > どうしてこうなるのか分かりません。
>
> Enterキーを押しても、普通はLostFocusやValidateイベントは発生しません。
> KeyPressやKeyDownイベントに何かコードを書いてませんか?

投稿時間:2004/12/07(Tue) 10:14
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^3: Validateイベントについて
> 返事ありがとうございます。
> 確かにEnterキーを押した場合、Validateイベントは発動しません
> でしたが、LostFocusは発動していました。
> Enterキーを押した場合に、Validateイベントを発動させる方法は
> ありますでしょうか。
> ご存知でしたら教えて下さい。

ということは、Text1のKeyPressかKeyDownに、Text2.SetFocusのコードを
書いているということでしょうか?
それでしたら、Validateイベントに書いている条件と同じコードをkeyPressや
KeyDownイベントに書いて、それがOKだったらtext2.SetFocusするように
すればいいのでは?

例えば、Text1が数値のみ入力可だとするとこんな感じ。
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        If IsNumeric(Text1.Text) Then
            KeyAscii = 0
            Text2.SetFocus
        End If
    End If
End Sub

Private Sub Text1_Validate(Cancel As Boolean)
    If Not IsNumeric(Text1.Text) Then
        Cancel = True
    End If
End Sub

投稿時間:2004/12/07(Tue) 11:38
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^4: Validateイベントについて
返事ありがとうございます。
内容の通りにしたのですが、
KeyPressの中にIf KeyAscii = vbKeyReturn Then
と記述しても発動しないのですが、
何か他に原因があるのでしょうか。





> > 返事ありがとうございます。
> > 確かにEnterキーを押した場合、Validateイベントは発動しません
> > でしたが、LostFocusは発動していました。
> > Enterキーを押した場合に、Validateイベントを発動させる方法は
> > ありますでしょうか。
> > ご存知でしたら教えて下さい。
>
> ということは、Text1のKeyPressかKeyDownに、Text2.SetFocusのコードを
> 書いているということでしょうか?
> それでしたら、Validateイベントに書いている条件と同じコードをkeyPressや
> KeyDownイベントに書いて、それがOKだったらtext2.SetFocusするように
> すればいいのでは?
>
> 例えば、Text1が数値のみ入力可だとするとこんな感じ。
> Private Sub Text1_KeyPress(KeyAscii As Integer)
>     If KeyAscii = vbKeyReturn Then
>         If IsNumeric(Text1.Text) Then
>             KeyAscii = 0
>             Text2.SetFocus
>         End If
>     End If
> End Sub
>
> Private Sub Text1_Validate(Cancel As Boolean)
>     If Not IsNumeric(Text1.Text) Then
>         Cancel = True
>     End If
> End Sub

投稿時間:2004/12/07(Tue) 13:53
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^5: Validateイベントについて
> 返事ありがとうございます。
> 内容の通りにしたのですが、
> KeyPressの中にIf KeyAscii = vbKeyReturn Then
> と記述しても発動しないのですが、
> 何か他に原因があるのでしょうか。

私は、Enterキーを押してLostFocusは発動させるコードがどこに書いてあるか
わからないので、KeyPressの方を書きましたが、もしNAOさんがKeyDownの方に
そのコードを書いていたら、そちらの方を修正してください。(^^;

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    Debug.Print "KeyDown"
    If KeyCode = vbKeyReturn Then
        If IsNumeric(Text1.Text) Then
            KeyCode = 0
            Text2.SetFocus
        End If
    End If
End Sub

投稿時間:2004/12/07(Tue) 14:21
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^6: Validateイベントについて
返事ありがとうございます。
すいません、私の書き方がよくなかったですね。
この質問は、カーソルがTEXT1にある状態で、
ENTERキーを押しても、KeyPressのイベントが発動しないと
いう意味なんです。
またLostFocusは発動させるコードは記述していません。

KeyPressのイベントが発動しないのは、どうして分かるでしょうか。
もし分かりましたら返事ください






> > 返事ありがとうございます。
> > 内容の通りにしたのですが、
> > KeyPressの中にIf KeyAscii = vbKeyReturn Then
> > と記述しても発動しないのですが、
> > 何か他に原因があるのでしょうか。
>
> 私は、Enterキーを押してLostFocusは発動させるコードがどこに書いてあるか
> わからないので、KeyPressの方を書きましたが、もしNAOさんがKeyDownの方に
> そのコードを書いていたら、そちらの方を修正してください。(^^;
>
> Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
>     Debug.Print "KeyDown"
>     If KeyCode = vbKeyReturn Then
>         If IsNumeric(Text1.Text) Then
>             KeyCode = 0
>             Text2.SetFocus
>         End If
>     End If
> End Sub

投稿時間:2004/12/07(Tue) 15:01
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^7: Validateイベントについて
> 返事ありがとうございます。
> すいません、私の書き方がよくなかったですね。
> この質問は、カーソルがTEXT1にある状態で、
> ENTERキーを押しても、KeyPressのイベントが発動しないと
> いう意味なんです。
> またLostFocusは発動させるコードは記述していません。

しつこいようですが、KeyPressだけじゃなくてKeyDownも発生しないんですよね(^^;
そうすると、DefaultプロパティがTrueのコマンドボタンがあるとか。
その場合はDefaultプロパティをFalseにすればうまくいくと思います。

投稿時間:2004/12/07(Tue) 18:28
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^8: Validateイベントについて
返事ありがとうございます。
KEYPRESS、KEYDOWN両方とも発生しないです。
TABキー、ENTERキー、どちらでも使えるようにしたいので、
項目チェックは、別にVARIDATEは使わずに、FUNCTIONで行い
たいと思います。
どうもありがとうございます。







> > 返事ありがとうございます。
> > すいません、私の書き方がよくなかったですね。
> > この質問は、カーソルがTEXT1にある状態で、
> > ENTERキーを押しても、KeyPressのイベントが発動しないと
> > いう意味なんです。
> > またLostFocusは発動させるコードは記述していません。
>
> しつこいようですが、KeyPressだけじゃなくてKeyDownも発生しないんですよね(^^;
> そうすると、DefaultプロパティがTrueのコマンドボタンがあるとか。
> その場合はDefaultプロパティをFalseにすればうまくいくと思います。