[[20080920163921]] 『テキストボックスに繰り返し入力したい』(あん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『テキストボックスに繰り返し入力したい』(あん)

 ユーザーフォーム上にテキストボックスが何個かあります。
 それぞれ入力するたびにenterキーで次のボックスにいくことにします。
 最後のテキストボックスが入力し終わったときにenterキーを押すと、
 それぞれの入力事項がシート上に反映されるようにします。

 質問したいことは、上記の最後のenterキーの操作で、
 自動的にまた最初のテキストボックスを選択状態にして、
 そのまま入力が続けられるようにできるかどうということです。

 最後のテキストボックスを出るときにSetFocusを使って
 最初のテキストボックスを選択状態にできるかと思ったのですが、
 選択状態になってくれません。

 なにか良い方法はないでしょうか?
 2003、XPです。宜しくお願いします。

 >選択状態になってくれません
 のコードを載せたら。
 (通りすがり)


 Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     For Kx = 1 To 5
         With Controls("TextBox" & Kx)
             Cells(Ky, Kx).Value = .Value
             .Value = ""
         End With
     Next Kx
     Ky = Ky + 1
     TextBox1.SetFocus
 End Sub

 大体こんな感じです。ちなみにテキストボックスはどれもフレームの中に入っています。
 フレームの中に入れないと、ちゃんと動くのですが…。
 (あん)

 フレームコントロール内に配置したコントロールの特にExitイベントは色々と問題があります。
 できたら、フレームを外すことを検討してください。

[[20080812191101]]

 ここでも同様な投稿をしていますが・・、

http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips03.htm

 詳しくは↑ここを参照のこと。

 私が確認した限りでは、Keydownイベントを使えば、フレームをつけても何とか作動します。

 Private Sub TextBox5_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim rw As Long
    Dim g0 As Long
    If KeyCode = 13 Then
       With Worksheets("sheet1")
          rw = .Cells(.Rows.Count, "a").End(xlUp).Row + 1
          For g0 = 1 To 5
             .Cells(rw, g0).Value = Controls("TextBox" & g0).Text
             Controls("TextBox" & g0).Text = ""
             Next
          TextBox1.SetFocus
          End With
       End If
 End Sub

 KeydownイベントとExitイベントの違いきちんと理解したうえでこれでもよいなら、
 これを使ってください。

 私なら、コマンドボタンを一つ設けてこれのクリックイベントで
 データの書き込み、Textbox1にフォーカスを当てる という仕様にしますけどね 

 ichinose


 バグだったんですね…。
 keydownやコマンドボタンの方法を試してみます。
 ありがとうございました。
 (あん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.