[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスに繰り返し入力したい』(あん)
ユーザーフォーム上にテキストボックスが何個かあります。 それぞれ入力するたびに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イベントは色々と問題があります。 できたら、フレームを外すことを検討してください。
ここでも同様な投稿をしていますが・・、
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.