過去ログ

                                Page     556
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼イベントの発生順  ばば 03/1/14(火) 16:20
   ┗Re:イベントの発生順  つん 03/1/14(火) 16:43
      ┗Re:イベントの発生順  ばば 03/1/15(水) 16:20
         ┣Help Me~~~~  つん 03/1/15(水) 16:43
         ┗KeyCode = 0 かなぁ  JuJu 03/1/15(水) 16:55
            ┗んん〜  JuJu 03/1/15(水) 17:12
               ┗Re:んん〜  yu-ji 03/1/15(水) 17:32
                  ┗あんがとー(^o^)  つん 03/1/15(水) 20:53
                     ┗前々から気になっていたんですが・・  ichinose 03/1/16(木) 8:25
                        ┗Re:前々から気になっていたんですが・・  yu-ji 03/1/16(木) 10:07
                           ┗もしかしてフレーム?  つん 03/1/16(木) 11:10
                              ┣Re:もしかしてフレーム?  ばば 03/1/16(木) 12:36
                              ┃  ┗過去ログ  つん 03/1/16(木) 13:19
                              ┗Re:呼ばれて飛び出て  角田 03/1/16(木) 15:00

 ───────────────────────────────────────
 ■題名 : イベントの発生順
 ■名前 : ばば
 ■日付 : 03/1/14(火) 16:20
 -------------------------------------------------------------------------
   ユーザーフォームに複数のテキストボックスと一つのコマンドボタンがあります。
TextBox1にはExitイベントをつけています。
If Len(TextBox1) = 0 Then
TextBox5.SetFocus
Exit Sub
End If
タブオーダーでテキストボックスは1〜10まで順番に飛ぶようになっているのですが、テキストボックス1がブランクのときは5へ飛びたいと考えています。

テキストボックス1にカーソルがある状態で、コマンドボタンクリックイベントでUnload UserFormとすると、
エラーになります。

これは、テキストボックスExitイベントより先にコマンドボタンClickイベントが行われているのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:イベントの発生順  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/1/14(火) 16:43  -------------------------------------------------------------------------
   ばば さん、こんにちは

>テキストボックス1にカーソルがある状態で、コマンドボタンクリックイベントでUnload UserFormとすると、
>エラーになります。

こちらで試してみると、コマンドボタンをクリックしようとした時点で、テキストボックス5にカーソルが移動して、コマンドボタンのイベントは発生しませんでした。
なんか動作が違いますね・・・

ばばさんがおっしゃるエラーは、クリックイベントでフォームがアンロードされてから、テキストボックス5にセットフォーカスしようとして、でも、すでにフォームがないからエラーになっちゃう!って感じですよね・・・
それを回避させるなら、KeyDownイベントつこてみはったらどうでしょう?

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

  If KeyCode = vbKeyTab Then
    If Len(TextBox1) = 0 Then
      TextBox5.SetFocus
    End If
  End If

End Sub

どーですかー?
 ───────────────────────────────────────  ■題名 : Re:イベントの発生順  ■名前 : ばば  ■日付 : 03/1/15(水) 16:20  -------------------------------------------------------------------------
   つんさん ありがとうございます。

Exitイベントにこだわる必要なないので、KeyDownイベントでエラーは回避できました。

ただ、KeyDownイベントでつんさんに教えていただいたコードをそのまま貼付け実行したところ、
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

  If KeyCode = vbKeyTab Then
    If Len(TextBox1) = 0 Then
      TextBox5.SetFocus
    End If
  End If

End Sub

目的どおりカーソルはテキストボックス5に飛ぶのですが、テキストボックス5にタブのデータ?が入力されてしまいます。
(カーソルのピコピコ点滅しているのがテキストボックスの中央あたりにきて、BackSpaceキーを押すと左端にカーソルが戻ります。)

テキストボックス5にはSetFocusするだけで、データは未入力状態にしたいのですが。
どうすればいいでしょうか?
 ───────────────────────────────────────  ■題名 : Help Me~~~~  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/1/15(水) 16:43  -------------------------------------------------------------------------
   ばば さん、こんにちは

すんません、今むちゃくちゃ忙しくて、お答えできません(>_<)
どなたか、お願いします。
無責任なことですんませんが、誰か助けてーーーーーーm(__)m
 ───────────────────────────────────────  ■題名 : KeyCode = 0 かなぁ  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 03/1/15(水) 16:55  -------------------------------------------------------------------------
   ばばさん、つんさんこんにちはぁ

>テキストボックス5にはSetFocusするだけで、データは未入力状態にしたいのですが。
>どうすればいいでしょうか?

 TextBox5.SetFocus
の前の行に
 KeyCode = 0
を入れてね

ではではぁ
 ───────────────────────────────────────  ■題名 : んん〜  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 03/1/15(水) 17:12  -------------------------------------------------------------------------
   そっけない回答になってますね(>_<)
あまり手が取れなかったので...^^;

説明足らずなら、後で追記します。
ごめんね。
 ───────────────────────────────────────  ■題名 : Re:んん〜  ■名前 : yu-ji  ■日付 : 03/1/15(水) 17:32  -------------------------------------------------------------------------
   レス書こうと思ったら、既にレスがついたので、一応補足部分を(笑)。

TEXTBOX1にフォーカスがある時にTABキーを押す

VBAでTEXTBOX5にフォーカスが移る

押されたTABキーがTAB文字?として入力される

って感じになっているんだと思います。
なんで、JuJuさんがかかれているように、そもそもKeyDownしたキー(=Keycode)
を無効(=0)にすれば、とりあえず動きます。


でも、そもそも
『Exit イベントは、同一フォーム上にある別のコントロールにフォーカスを
移す直前に発生します。』
とヘルプに書いてあるので、先にコマンドボタンのクリックイベントが実行
されるはずはないのですが。(^^;
#Excelバージョンは書かれてないですが、Excelのバグでしょうか?
#本当に、コマンドボタンのクリックイベントが実行されていたかどうかは、
#ブレイクポイントを置けば確認できるので、原因を突き詰める必要があれば
#参考になるかな。
 ───────────────────────────────────────  ■題名 : あんがとー(^o^)  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/1/15(水) 20:53  -------------------------------------------------------------------------
   JuJuさん、yu-ji さん、フォローありがとうございます。

会社では忙しくて、家ではこの間OSの再インストールしたばっかりで、Officeが入ってなくて、にっちもさっちもいかない状態でしたので、助かりましたー。
横着してんと、はよ、Officeいれよ・・・・

>『Exit イベントは、同一フォーム上にある別のコントロールにフォーカスを
>移す直前に発生します。』
>とヘルプに書いてあるので、先にコマンドボタンのクリックイベントが実行
>されるはずはないのですが。(^^;

ですよね・・・私も会社で試してみて、再現しないので、なんでやろー?って思ってました。
なんか、むちゃ気になります。
 ───────────────────────────────────────  ■題名 : 前々から気になっていたんですが・・  ■名前 : ichinose  ■日付 : 03/1/16(木) 8:25  -------------------------------------------------------------------------
   皆さん、おはようございます。

TextboxのEneterやExitイベント内でのSetfocusの動作はいつも気になっていたんですが、やっぱりバグみたいですよ・・・。
詳細は、こちら。

http://support.microsoft.com/default.aspx?scid=kb;ja;JP436443

対象がEX2002になっていますが、2000でも起きます。
これは、早く直してほしいですね。
 ───────────────────────────────────────  ■題名 : Re:前々から気になっていたんですが・・  ■名前 : yu-ji  ■日付 : 03/1/16(木) 10:07  -------------------------------------------------------------------------
   ▼ichinose さん:
>TextboxのEneterやExitイベント内でのSetfocusの動作はいつも気になって
>いたんですが、やっぱりバグみたいですよ・・・。
>詳細は、こちら。
>
>http://support.microsoft.com/default.aspx?scid=kb;ja;JP436443
>
>対象がEX2002になっていますが、2000でも起きます。

情報ありがとうございます。

上記リンクの再現手順を試してみたら、確かにExcel2000でもバグってました。
そういえば、この質問についてテストしてる時に、ばばさんのいわれていた動作は
しなかったんですが、他のTextboxにフォーカスがいくのでなんでやろー?とは
思ってました(^^;

ただ、なぜClickイベントが実行されてしまうのかが、まだよく分からないです(^^;
上記リンクには書かれていない何かが影響しているのかな?
 ───────────────────────────────────────  ■題名 : もしかしてフレーム?  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/1/16(木) 11:10  -------------------------------------------------------------------------
   こんにちはー

>ただ、なぜClickイベントが実行されてしまうのかが、まだよく分からないです(^^;
>上記リンクには書かれていない何かが影響しているのかな?

以前に、フレーム内のテキストボックスでバグが発生することを聞いたことがあるのを思い出しました。(角田さんやったよね?教えてくれたん)
で、テキストボックスをフレームで囲んでテストしてみました。そしたら、Exitイベントが発生する前に、コマンドボタンのクリックイベントが発生しました。
(でも、Exitイベントが無効になってるようなんで、ちょっと気になる・・・ゆっくり検証する時間がなくて・・・ごめんなさい)

もしかしたら、それが原因かなー?
ばばさん、フレーム使ってはりませんか?
 ───────────────────────────────────────  ■題名 : Re:もしかしてフレーム?  ■名前 : ばば  ■日付 : 03/1/16(木) 12:36  -------------------------------------------------------------------------
   ありがとうございます

>以前に、フレーム内のテキストボックスでバグが発生することを聞いたことがあるのを思い出しました。(角田さんやったよね?教えてくれたん)
>で、テキストボックスをフレームで囲んでテストしてみました。そしたら、Exitイベントが発生する前に、コマンドボタンのクリックイベントが発生しました。
>(でも、Exitイベントが無効になってるようなんで、ちょっと気になる・・・ゆっくり検証する時間がなくて・・・ごめんなさい)
>
>もしかしたら、それが原因かなー?
>ばばさん、フレーム使ってはりませんか?

フレームつかってます。
フレームの中にテキストボックスがありExitイベントを発生させています。
そこで、別のテキストボックスにSetFocusしています。
コマンドボタンはフレームの外です。
 ───────────────────────────────────────  ■題名 : 過去ログ  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/1/16(木) 13:19  -------------------------------------------------------------------------
   どもども。
やっぱフレーム使ってはったんですね。

ちょっくら過去ログ探してみたら、ありました♪
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=one;no=11079;id=Excel
 ───────────────────────────────────────  ■題名 : Re:呼ばれて飛び出て  ■名前 : 角田  ■日付 : 03/1/16(木) 15:00  ■Web : http://www.h3.dion.ne.jp/~sakatsu/index.htm  -------------------------------------------------------------------------
   こんにちは。
>角田さんやったよね?教えてくれたん
同じのを↓に整理してありますので、もし[他Q&A]リンク禁止のサイトで
紹介する必要が有った際には使って下さい。

「Exitを通らないで外へ!」
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips03.htm
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 556