• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのユーザーフォームのframeとTabIndexについて)

VBAのユーザーフォームのframeとTabIndexについて

このQ&Aのポイント
  • VBAのユーザーフォームで複数のフレームを使っている際に、TabIndexの設定やフレーム間の移動についてわからなくなってしまいました。
  • 特定のフレーム内の最後の要素の次に別のフレームの要素にジャンプする方法がうまくいかず、設定に問題があるのか疑問です。
  • また、tabを押す度に重複する要素が自動的に作成されてしまう現象も発生しています。これを防ぐ方法はありますか?

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

各フレームのTabStopがFalseになっていませんか? なっていたらTrueにして見てください。

mokkun0307
質問者

お礼

ご回答ありがとうございます。 確認してみましたが、“true”になっていました。 でも、どうにかこうにか一応完成に漕ぎつけたのでよかったです。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • TabIndexの見分け方について

    今回の開発では既存のソースで1つのフォームに恐ろしいほどのコントロールが存在します。 その為、TabIndexが順番通りになっているか確認したいのですが、1つ1つのコントロールを見ていたら時間がもったいないと思いますのでなにかいい方法があれば教えてください。 ループでオブジェクト名とインデックスのログをはくようにすれば?と言われたのですが、よくわかっていません。どうかアドバイスお願いします。 もう1点質問なのですが、TabIndexが最後のコントロールから最初のコントロールにタブ移動するのに1回どこかに移動してしまって、2回タブを押下しないと最初のコントロールに戻ってこないです。 なにか原因があるのでしょうか? 以上です。わかりにくい説明ですがご回答お願い致します。

  • TabIndex順にタブ移動しない・・

    VB.NETです。 TextBoxなどのTabIndexに0~35までのTabIndex番号を付けていますが、タブ移動させたときに何故かTabIndex番号順に進んでくれません。 実行させた際に、最初にカーソルのある位置が、TabIndex=15のTextBoxになってしまっています。 そこからタブ移動させると、15, 16, 17, 18, ・・・・・・35まで進み、次は頭から(TabIndex=0)から進んで、TabIndex=14で止まります。 タブ止めは、以下の質問で解決し、実現しています。 http://okweb.jp/kotaeru.php3?q=1377546 最初は、正常にタブ移動(0~35)していたのですが、TextBoxを移動させたり作り直したり再編集しているうちに、気づくとおかしな動きになっていました。 ちなみに、TabIndex0~14までのタブは、Container1上に貼り付けて、TabIndex15~35までのタブは、Container2上に貼り付けています。 Containerも、TextBoxも、Form1上にあります。 原因がわかる方いらっしゃいましたら、アドバイスいただけると助かります。 ※Containerとは、InputManのカスタムコントロールで、標準のPanelコントロールの高機能版みたいなものです。

  • excel ユーザーフォームでシートごとに転記

    excel vbaでユーザーフォームを作りました。 その中で ComboBox1に「青」を選択すると(TextBox1、TextBox2)がSheet1に ComboBox1に「赤」を選択すると(TextBox1、TextBox2)がSheet2に 転記されるようにしたいと思っています。 (ComboBox1の青や赤は転記する必要なし) どのようにすればいいのか、どなたかご教示願います。 よろしくお願いします。

  • VisualC#.net TabIndexの設定

    Microsoft Visual C# .NET 2003で、Windowsアプリケーションを作っています。 フォーム上に、テキストボックスですとかプッシュボタンですとか、コントロールがいくつかあります。 実行時にTabキーを押したときの順番(Tabオーダー)は、プロパティの"TabIndex"で決まっていると思うんですが、 あとでコントロールを追加したときなどTabIndexをずらしたり付け替えたりするにはどうすればよいのでしょうか。 1つ1つ付け替えるしかないのでしょうか。

  • フォーカスの順番移動

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

  • 【Excel VBA】ユーザーフォームについて

    Excel2003を使用しています。 Sheet1のある範囲のデータをSheet2に(アクティブセルに)コピーするというマクロを作成しました。 データをコピーする際、範囲中のいくつかのセル(2~3箇所ですが)のデータを書き換えて、コピーするときもあるため、変更箇所がある場合は入力モード等の関係もあるので、ユーザーフォームを使って、書き換えるようにしました。 コピー元の範囲を変えただけの同じようなマクロが複数あるのですが、テキストボックスやコンボボックスに入力されたデータをシートへ転記する際のセルの位置が変わるだけなので、ひとつのユーザーフォームを使いまわしというと変ですが、そのようなことはできないのかなと思い、質問させていただきました。 -------------------------------------------------------------- Private Sub CommandButton1_Click()   Range("F371").Value = TextBox1.Text   Range("N371").Value = ComboBox1.Text   Unload Me End Sub 上記コードは、ユーザーフォームのコードの一部ですが、 Range("F371").Value = TextBox.1Text      ↓ Range("F397").Value = TextBox.1Text のように、転記先のセルだけ変わればいいので、そのために、同じユーザーフォームをいくつも作るのも…と思った次第です。使いまわしのようなことはできなければ、コピーして作成しようと思っています。 うまく文章に表すことができなくて申し訳ないのですが、よろしくお願いします。

  • VBAについて

    UserForm1に、TextBox2、TextBox3、ComboBox1があります。 例えば、それぞれに TextBox2 = 100 TextBox3 = 500 ComboBox1 = abc-def と値をフォームから入力し、 UserForm1に配置された「OK」ボタンをクリックすると、 エクセルシートのH10からM10の結合された一つのセルの中に 100 / 500 abc-def と2段表示させたいのですが、可能でしょうか。 可能でしたら方法を教えて下さい。

  • EXCEL VBA ユーザーフォーム内のテキストボックスを一括処理する方法について

    EXCEL VBAのユーザーフォームについて質問があります。 ユーザーフォームを作り、その中にコンボボックスを1個、テキストボックスを100個設置する。 コンボボックスの値が1のときはテキストボックス1~テキストボックス50までのEnabledをFalseに設定し、 コンボボックスの値が2のときはテキストボックス1~テキストボックス100までのEnabled をFalseに設定する。 このとき、TextBox1.Enabled = False、TextBox2.Enabled = False・・・と一つ一つ書いていくのではなく、 セルを処理するときと同様に、テキストボックスの番号を変数にして処理することは可能でしょうか。 Private Sub ComboBox1_Change()  Dim i As Integer   If ComboBox1.Value = 1 Then   For i = 1 To 50   TextBox(i).Enabled = False   Next i   ElseIf ComboBox1.Value = 2 Then   For i = 1 To 100   TextBox(i).Enabled = False   Next i   End If End Sub というような処理をイメージしているのですが、うまくいきません。どうぞよろしくお願いいたします。

  • VBA ユーザーフォームの値の取得方法

    いつもお世話になっております。 以下のような仕様のVBAコードを作成したいと考えています。 (貼付資料も参照してください) ■仕様  (1)ユーザーフォーム   1.処理の対象となる市名をチェックボックスから選択   2.処理の対象となるシート名をコンボボックスから選択  (2)ユーザーフォームで選択した    選択したシートの対象市名のデータを配列に格納  (3)格納した配列を元に一覧、詳細の表を作成 ■オブジェクト  ●ユーザーフォーム  ・フレーム   Frame1:神奈川県 Frame2:茨城県 Frame3:栃木県 Frame4:対象年度  ・チェックボックス   CheckBox1:フレーム外の全選択   CheckBox2~4:各フレームの全選択   CheckBox5~11:市町村名(横浜市~小山市の順)  ・コンボボックス   ComboBox1:対象年度  ●ワークシート ■不明な事  (1)⇒(2)の処理(ユーザーフォームで選択した項目を他のプロシージャで使用する)  について質問させていただきます。  私の頭の中では、  I.パブリック変数を用意して、CheckBoxやComboBoxで選択した項目を格納  II.プロシージャ引数として・・・  の2つの方法が候補として浮かんでいます。  Iに関して  CheckBox1:対象年度については、オブジェクトが1つしかないので、  適当なパブリック変数(今回はmySh)を用意して、  mySh=Combobox1.Value  とすれば、仕様は満たせると思いますが、  CheckBoxに関しては、数が多いので,どのようにすれば良いのかイマイチ分かりません。  IIに関しては、全く見当が付きません。 ■質問  (1)上記の処理を行う場合は、I又はIIの方法で問題無いでしょうか?  (2)I又はIIの方法の優劣はあるのでしょうか?  (3)I、IIの方法を教えてください。 どうぞよろしくお願いします

  • エクセルVBA フレーム内のイベント

    フレーム内に、テキストボックスを配置し、 そのテキストボックスをExitした場合にFormatを変更したいのですが、 フレーム内にテキストボックスがあるためかイベントが発生しません。   1) Frame1 の中に Textbox1 を配置   2) Textbox1には数値を入力   3) 入力後、次のコントロールに移動した場合、    Textbox1.textをformat(Textbox1.text,"#,##0")にする   Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)     msgbox "Exit"   End Sub   としましたが、ユーザフォームを終了した時に、msgが出力されます。 フレーム内のイベントはどのようにすればよいか、教えていただきたいです。 よろしくお願いいたします。

古い契約を解除したい
このQ&Aのポイント
  • 古い契約を解除する方法とは?解除手続きや注意点について解説します。
  • 古い契約を解除したいけど、どうしたらいいの?解除の流れや必要な手続きについて詳しくご説明します。
  • 古い契約の解除に関するお悩みを解決!解除方法や解約手続きのポイントについてお伝えします。
回答を見る

専門家に質問してみよう