• ベストアンサー

エクセルで、任意のテキストボックス等にフォーカスを移したい

すいません、またまた質問です。 エクセルXPで、ユーザーフォーム上に 複数のテキストボックスやリストボックスを 置いて入力した値が任意のシートのセルに 入力されるというものを作っています。 (しかしながらVBAがほとんど見様見真似レベル なのでかなり悪戦苦闘(~_~*)) そこで、ユーザーフォームにて例えばTEXTBOX1に 入力後、Enterで次のテキストボックス(又は リストボックス)にフォーカスを移したいのですが、 その時に任意のテキストボックス等にフォーカスを 移すことは可能でしょうか。 番号順(なのかな?)に自動でフォーカスを 移動させることはできたのですが、任意の対象へ 移動させるやり方とかってあるのでしょうか。 例えばTEXTBOX1からRISTBOX5へ移すとか。 入力する順番に移動できたらユーザーフォーム上での 入力作業が非常に楽になると思って(^o^;) どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

#2 tommy-pie83 さんのご回答で良いとおもいますが、 その作業は面倒なので、 VBE でフォームオブジェクトを表示した状態で、 [表示]-[タブオーダー] で調整です。ちなみに、フォーカスを取得させない コントロールなら、「TabStop」プロパティーを False にします。

happyrin
質問者

お礼

KenKen_SP様 ありがとうございます。 こんなに簡単で便利な方法があるとは(^_^;) まさしく探し求めていた答えです。 本当にありがとうございました。

その他の回答 (2)

回答No.2

あまり詳しくないのですが… 私が作ったマクロでのユーザフォームのテキストボックスのフォーカスの移動には それぞれのテキストボックスのプロパティを開いて TabIndexに数字を入れています。 フォーム上の テキストボックス等は 作った順に番号が自動で振られているようですので(最初は0から)それを書き換えれば自分の好きな順番に出来ると思います。

happyrin
質問者

お礼

tommy-pie83様 どうもありがとうございます。 なるほど、プロパティのTabIndexを 書き換えればいいのですね。 もっと勉強しないと… とにもかくにも迅速な回答、感謝です。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

イベントとして何を使うかは選択肢がいろいろありますが、例えばTEXTBOX1に値が入力されたら、TEXTBOX5にフォーカスを移すのであれば、 Private Sub TextBox1_Change() 処理 TextBox5.SetFocus End Sub になると思います

happyrin
質問者

お礼

zap35様 どうもありがとうございます。 昨日質問してすぐに回答をもらえて ものすごく感謝です。 VBAって本当にいろんなことが できるのですね。 教えて頂いた書き方、覚えておきます。

関連するQ&A

  • エクセルVBA テキストボックスへのセットフォーカスについて

    エクセルVBAでユーザーフォーム内に配置されたテキストボックス への数値の入力時に、指定範囲内になければメッセージボックスで 規格外であることを警告し、その規格外が入力されたテキストボックス を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが どうすればよいのでしょうか? 自分で考えた構文です。 Private Sub TextBox1_AfterUpdate() Dim A As Single A = TextBox1.Text If A < 1.99 Or A > 3.00 Then MsgBox "規格外!!"     TextBox1.Text = "" TextBox1.SetFoucus End If Exit Sub End Sub これですと、次のテキストボックスにフォーカスが移動してしまいます。 次のテキストボックスにフォーカスを移動させずに、規格内の値が 入力されるまでフォーカスを移動させない方法を教えて下さい。 お願い致します。

  • エクセルのフォームでのフォーカス

    エクセルVBAでのユーザーフォームの テキストBOX間のフォーカスはenterで移動可能かのですが、間にComboBoxがあるとComboBoxが飛ばされますが そこにもフォーカス移動って可能でしょうか?

  • テキストボックスにフォーカスを当てる?

    こんばんは,すみませんよろしくお願いします。 テキストボックスにフォーカスを当てるには,例えば, TextBox1.SetFocus のようにするんだと思うのですが,テキストボックスに初期値が設定されていたときには,上記のようにすると,初期値のテキストの右側に線のようなポインタがテキストコントロール内にでてきます。 しかし,このような状態では,いったん初期値を消さないと,別の値に書き換えることは出来ません。 テキストコントロール内に初期の値として,何らかのテキストが入力されているとき,文字列が選択された状態になっていれば,即,別の値を入力することが出来ますので,ユーザーフォームをshowしたときに,テキストボックス内の初期値 (例えば,「ここに名前を入力してください」などの文字列) を選択した状態にしたいのです。どのようにすれば良いのでしょうか?何度もすみません。

  • VBA テキストボックスで計算

    VBAの勉強を始めたばかりで、見よう見まねで色々作っています。 ユーザーフォームのテキストボックスに、計算結果を表示したいのですが、行き詰まってしまいました。 textbox1 textbox2  .  .  textbox5 があり、textbox6に、1~5に入力された数字を足して、消費税額が出るようにしたいです。 例えば textbox1・・・100,000 textbox2・・・200,000 と入っていたら textbox6に 【消費税額 15,000円】 と表示させたいです。 textbox1~5は、1から順番に数字を入れていきますが、全てに入るとは限りません。 不足情報等がありましたら、ご指摘下さい。 ご教授の程、よろしくお願いします。

  • エクセルVBAでの テキストボックス内の値検索について

    お世話になります。 早速質問致します。エクセルVBAでユーザーフォームへ配置された 各テキストボックスへ入力を忘れた箇所がある場合それを見つけ出し メッセージボックスで入力忘れを表示させ、さらに、その入力を忘れ てしまった空欄のテキストボックスにフォーカスを移動させたいので すが、どのように指令したら良いのでしょうか? ちなみにテキストボックスは15個設けています。それらを一度に 検索する方法がありましたら、アドバイスお願い致します。

  • EXCEL VBAのユーザーフォームの操作方法について教えていただきたいことがあります

    EXCEL VBAのユーザーフォームの操作方法について教えていただきたいことがあります。 (1)ユーザーフォームにテキストボックスを2つ作る (2)コマンドボタンを1つ作る。 この場合に、コマンドボタンを押すと、セットフォーカスされている方のテキストボックスに「新春」と表示させることはできるのでしょうか。 キーボードは当然セットフォーカスされているテキストボックスに入力されますが それと同じ機能をコマンドボタンにも持たせたいのです。 Private Sub CommandButton1_Click() で TextBox1がセットフォーカスされているならTextBox1に"新春"と入力する TextBox2がセットフォーカスされているならTextBox2に"新春"と入力する というような条件式になるのでしょうか。 色々調べましたが答えが見当たりません。 よろしくお願いいたします。

  • フォーカスの順番移動

    VBAで今フォーム1にテキストボックス2つ コンボボックス3つ上から順にあるのですが エンターキーまたはタブを押すと上から順番にフォーカスを移動させたいので すが、どうすればいいのでしょうか?プロパティの設定でできるのでしょうか ?今はタブキーを押すとばらばらの順番でフォーカスが移動します。なぜでしょう? ちなみにコントロールの名前は上から TextBox1、TextBox2、ComboBox1、ComboBox2、ComboBox3です

  • エクセル2003 ユーザーフォームにてフォーカスの有無の判断

    いつも勉強させていただいております。 今回、エクセルのユーザーフォームを用いて、入力画面を作成 しております。 で、日付を入力するテキストボックスが2箇所有り、 その入力をMSフォームカレンダーから入力させようと 考えております。 この日付を入力するテキストボックスは、それぞれ異なる 日を入力させたいのですが、カレンダーをクリック したときに、フォーカスの在る方に入力する形を考えています。 でご質問なのですが、 「フォーカスの在るほうに」 と言う分岐コードの書き方がわかりません。 宜しくお願いいたします。 Private Sub Calendar1_Click() 'if textbox3にフォーカスが在るならば<<書き方がわかりません TextBox3.Value = Calendar1.Value end if 'if textbox4にフォーカスが在るならば<<書き方がわかりません TextBox4.Value = Calendar1.Value end if End Sub こう言う書き方は出来ないものでしょうか?

  • Accessテキストボックスの未入力チェック

    いつも参考にさせて頂いております。 Accessテキストボックスの未入力チェックで上手くいかず悩んでいます。過去の情報等調べましたが、わかりませんでした。 どなたか宜しくお願い致します。 フォーム1にテキストボックス1、ボタン1があります。 テキストボックスを何も入力せず、Enter等で移動する時にチェックをかけたいです。 もし、テキストボックスに何も入力がなかったら、メッセージを出し、フォーカスをテキストボックスに戻す。 何か入力があれば、ボタンにフォーカスが移動する。 If IsNull(Me.テキストボックス1) = "" Then msgbox "未入力です。" Me.テキストボックス1.SetFocus End If 宜しくお願い致します。

  • エクセルのユーザーフォームについて

    パスワード入力用のしかけです。 ワークシートに配置したコマンドボタンを押してユーザーフォームを呼び出します。 Private Sub CommandButton1_Click() UserForm1.Show End Sub ユーザーフォームにはテキストボックスとコマンドボタンを配置しております。 テキストボックスのPasswordCharには * を設定しました。 Private Sub CommandButton1_Click() If StrConv(TextBox1.Text, vbLowerCase) = "abcd" Then MsgBox "OK!" Unload Me Else TextBox1.Text = "" TextBox1.SetFocus End If End Sub これで、ABCDまたはabcdと入力され、ユーザーフォーム上のコマンドボタンをクリックすれば、ユーザーフォームは消えます。 でも、いちいちマウスでクリックするのが面倒なのでEnterキー1回でユーザーフォームを消したいのです。 今でも、一度Enterキーを押すと、ボタンにフォーカスが移動するので、さらにEnterで消えますが、二度ではなくEnterキー1回でユーザーフォームを消すにはどうすればよいのでしょうか? ユーザーフォームは使ったことがないのでわかりません。 よろしくお願いします。

専門家に質問してみよう