- 締切済み
エクセル ユーザーフォーム
エクセルのユーザーフォームでコマンドボタンを使ってテンキーを作りたいのですが、入力するときにテキストボックス1、テキストボックス2の切り替え方がわからなく困っています。 2つのテキストボックスに対応させるにはどのようにコードを書いたら良いでしょうか。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率66% (1742/2617)
他の方法として ボタンのプロパティで TabStopとTakeFocusOnClick の値はTrueのまま (Falseにというのをしなくて) フォームの表示時にテキストボックスがアクティブになっていることが条件ですが グローバル変数を使って たとえば Dim TextboxName As String として 各テキストボックスのExitに Private Sub テキストボックス1_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextboxName = ActiveControl.Name End Sub とし ボタンのクリックに Me.Controls(TextboxName).Value = "入れたい値" とする方法もあります。 ただ、グローバル変数がまれに飛ぶという事を聞いたことがあるので、どこかのセルに値を格納したほうがいいかもしれません。 Range("X1").Value=ActiveControl.Name みたいな感じで。
- imogasi
- ベストアンサー率27% (4737/17070)
TABキーを押せば、次のテキストボックスにフォーカスが移る、と思うが、そのことですか? >コマンドボタンを使ってテンキーを作りたいのです と言っておきながら、次は「テキストボックス1、テキストボックス2」と 言っているが、どうなっているのか。 ーーー 「コマンドボタンを使ってテンキーを作りたいのです」は、VBAの上級者でないと、スマートなコーディングにならないのだがご存じか。クラスモジュールの利用関連。「コントロール配列」といった考え方。10回同じようなコードを書くつもりなら、それでよいが。 ーー >テキストボックス1、テキストボックス2の切り替え方がわからなく困っています。に関連して またコントロールというものは、TabIndexという仕組みがあるが。 http://www.sigoto.co.jp/excel/activex/lesson08/activex29.htm フォーム上に作られたコントロールにカーソルのフォーカス(焦点)が移動する順番を決める番号 ーーー そもそもVBAの経験はあるのかな。使いこなすにはVBAの技量が必要になるように思うが、質問では書いてないが。 ユーザーフォームを使うレベルに達してないように感じる。 ーー 入力が終わったことを、システムに伝えるための、コマンドボタンも1つ必要と思うが、質問に書いてない。
- kkkkkm
- ベストアンサー率66% (1742/2617)
ボタンのプロパティで TabStopとTakeFocusOnClick の値をFalseにしておいて ボタンのクリックイベントで If TypeName(ActiveControl) = "TextBox" Then ActiveControl.Value = "入れたい値" End If とかでいかがですか。
- kkkkkm
- ベストアンサー率66% (1742/2617)
単純にデータを入れるとしたら テキストボックス1.Value=1 とか テキストボックス2.Value=5 なのですが、どのような条件でテキストボックスを切り替えたいのでしょう 桁ごとにテキストボックス作っているわけではないと思いますが。 桁上がりをしたいとかでしょうか1のコマンドボタンを押したとしたら テキストボックス1.Value = Val(テキストボックス1.Value) * 10 + 1
補足
テキストボックス1を選択してるときはテキストボックス1に入力できて テキストボックス2を選択してるときはテキストボックス2に入力できるというような切り替えをできないものかと考えてます!