VBAユーザーフォーム 【解決方法Q&A/疑問攻略/ブログ】
Q&A:VBAユーザーフォームについて? 解決方法/評価
・Excel VBA ユーザーフォームでの質問です( Excel2000)Excel VBA のユーザーフォームでのフォーカス移動について質問です。テキストボックスとリストボックスを組み合わせたデータ入力フォームを作成しています。できれば 次のフォーカスへは「Enter」キーで進んでいきたいのですが、テキストボックスへ文字入力後はEnterで次のフォーカスへ進みますが、リストボックスはTABキーじゃないと次のフォーカスへ移ってくれません。リストボックスには初期値が設定してあります。そのリストボックスにフォーカスがあるときに、Enterキーを押すことによって次のフォーカスへと行きたいのですが方法がありますでしょうか?リストボックス内のEnterキーでコマンドボタンが発動するのは検索で出てきましたが。。。よろしくお願いします。・Excel VBA ユーザーフォームの呼び出し方についいて質問です。(Excel 2000)Excel VBA でのフォームの呼び出し方について質問です。複数の店舗があり、各店舗はそれぞれ複数の売上入力シートを持っています。例として以下のシートがあるとします。(3店舗がそれぞれ5部門のシートとします)A店101A店102A店103A店104A店105B店101B店102B店103B店104B店105C店101C店102C店103C店104C店105シート名の末尾3ケタの数字が同じであれば同じ様式となっています。(A店の102 と B店の102 と C店の102 のシートは同じ様式)この各シートにデータを入力するためにユーザーフォームを利用します。ユーザーフォー名は 「入力用フォーム001」~「入力用フォーム005」としました。(ユーザーフォームを介してセルにデータを入力することで、誤入力・規定外のデータ・全角・半角などの規則性を整えるためです)そこで、5種類のユーザーフォームを準備しました。(末尾101~105のそれぞれ用です)この5種類のフォームを各店舗のシートから呼ぶことをしたいのですが、気持ちとしてはBUMON=Right(Activesheet.Name , 3) ' ←アクティブシート名の右から3文字分FORM_NAME = "入力用フォーム" & BUMON ' ← FOME_NAME に「入力用フォーム」と上の行で取得した3ケタの数字を代入FORM_NAME.Show ' ←そのフォームを表示するとやりたいのですが、これを実行すると「実行時エラー'424' オブジェクトが必要です。」 と言われてしまいます。C店の部門103のシート (シート名: C店103)がアクティブの時に実行するとFORM_NAME に "入力シート103" が入っているのは確認できました(MsgBox で変数 FORM_NAME の値を表示)しかし、その名前でフォームを呼び出すことはできませんでした。ユーザーフォームの呼び出しは変数ではダメなのでしょうか?よろしくお願いします。・VBAユーザーフォーム 配列の1レーンだけをリストボックスのリストに移したいですListBox1.List() = Arrとすると、Arrが1次元のときは値が入りますが、配列が2次元のときなど、Arr(0,)だけ(一挙に)移したい場合はどうすればよいですか?Forを使ってもよいのですが、膨大なデータを扱う場合、ListBox1.List() = Arr で見かけ一挙に移す場合と、Forで順次移す場合とでは、計算速度がどれほど違うものなのかと思いまして。それも含めて、回答いただければと思います。・EXCEL VBA ユーザーフォームについて仕事上システムを作り始めたVBA初心者です。すみませんが、ご教示下さい。選択した「1の行」のC1をクリックしたときにユーザーフォームを起動させて入力しその行のセルに、数字の1を反映させたいと思っています。その行は1で終了で今後足していきません。他の行に移ります。フォームだけは作ってみたのですが反映の仕方がわかりません。選択項目が多いので、2ページで作りました。Page1C1にテキストボックスで「#1」、D1に「#2」(記入ない場合有り)、F1に「#3」(記入ない場合有り)、H1にチェックボックス#4(選択ない場合有り)。獲得コーナーのI1~Z1まで「Frame1」のグループどれか一組、チェックボックス(I1・J1・K1 3個ずつの連続)。3個中、左以外は記入ない場合有り。いずれかのグループに必ずチェック。内訳の「Frame2」AA1~AK1のオプションボタン一つ必ず選択。Page2「Frame3」AL1、AM1、AN1で、オプションボタン一つ必ず選択。「Frame4」チェックボックス複数選択「#11」AO1・PO1、 「#12」AQ1・AR1、「#13」AS1、AT1(記入ない場合有り)「Frame5」AV1~AZ1複数選択「Frame6」BA1~BC1複数選択「Frame7」BD1~BE1複数選択「Frame8」BF1~BI1オプションボタン一つ必ず選択。選択後右下のコマンドボタンの「OK」ボタンで反映させたいと思っています。選択セルが全てC列なのですが、複数選択する場所があるのと、シートが1日~31日と多いのです。(中身は全て一緒です。)何を記入するとその行のセルに反映されるのかわからなかったのでご教示いただきたく思います。・EXCEL VBA ユーザーフォームについてEXCEL VBA ユーザーフォームについて仕事上システムを作り始めたVBA初心者です。すみませんが、ご教示下さい。選択した「1の行」のC1をクリックしたときにユーザーフォームを起動させて入力しその行のセルに、数字の1を反映させたいと思っています。その行は1で終了で今後足していきません。他の行に移ります。フォームだけは作ってみたのですが反映の仕方がわかりません。選択項目が多いので、2ページで作りました。Page1C1にテキストボックスで「#1」、D1に「#2」(記入ない場合有り)、F1に「#3」(記入ない場合有り)、H1にチェックボックス#4(選択ない場合有り)。獲得コーナーのI1~Z1まで「Frame1」のグループどれか一組、チェックボックス(I1・J1・K1 3個ずつの連続)。3個中、左以外は記入ない場合有り。いずれかのグループに必ずチェック。内訳の「Frame2」AA1~AK1のオプションボタン一つ必ず選択。Page2「Frame3」AL1、AM1、AN1で、オプションボタン一つ必ず選択。「Frame4」チェックボックス複数選択「#11」AO1・PO1、 「#12」AQ1・AR1、「#13」AS1、AT1(記入ない場合有り)「Frame5」AV1~AZ1複数選択「Frame6」BA1~BC1複数選択「Frame7」BD1~BE1複数選択「Frame8」BF1~BI1オプションボタン一つ必ず選択。選択後右下のコマンドボタンの「OK」ボタンで反映させたいと思っています。選択セルが全てC列なのですが、複数選択する場所があるのと、シートが1日~31日と多いのです。(中身は全て一緒です。)何を記入するとその行のセルに反映されるのかわからなかったのでご教示いただきたく思います。・エクセル VBA ユーザーフォームで複数の条件が判定されないTextBox1から4までは数値、ComboBoxには「特」か空欄が入力されます。以下の通りにコードを書いたのですが、ComboBoxに「特」が入力されているとTextBox1とTextBox2が空欄でもTextBox6に「A」と返されてしまい正しいランク付けができません。入力シートでも使っていたコードなので条件式はあっているはずなんですが、なぜか上手く実行されません。どこが間違っているのか教えて下さい。Private Sub CommandButton1_Click()If TextBox1.Value = "" And TextBox2.Value = "" And TextBox3.Value = "" And TextBox4.Value = "" And ComboBox1 = "" Then '格付なしTextBox6.Value = ""ElseIf ComboBox1 = "特" And TextBox1 >= 920 And TextBox2 >= 6 Then '格付A→特、920点以上、一級6人以上TextBox6.Value = "A"ElseIf ComboBox1 = "特" And TextBox1 >= 770 And TextBox2 >= 2 Then '格付B→特、770点以上、一級2人以上TextBox6.Value = "B"ElseIf TextBox1.Value >= 700 Then '格付C→700点以上TextBox6.Value = "C"ElseIf TextBox1.Value > 0 Then '格付D→0点以上TextBox6.Value = "D"End IfEnd Sub・エクセルVBA ユーザーフォームで複数分岐?以前入力シートを作ってクリックイベントでランク付けをしていました。それをユーザーフォームで流用したいのですが、やり方がわかりません。さらに今回は所在地を入力するテキストボックスに「都」「道」「府」「県」があった場合は以下の処理を'土木格付け県外If 土木許可区分 = "特" And 土木 >= 1070 Then '格付A→特定許可、1070点以上土木格付.Value = "A"ElseIf 土木許可区分 = "特" And 土木 >= 890 Then '格付B→特定許可、890点以上土木格付.Value = "B"ElseIf 土木.Value >= 750 Then '格付C→750点以上土木格付.Value = "C"ElseIf 土木.Value > 0 Then '格付D→0点以上土木格付.Value = "D"End Ifない場合は以下の処理を実行したいです。'土木格付け県内If 土木許可区分 = "特" And 土木 >= 920 And 土木1 >= 6 Then '格付A→特定許可、920点以上、一級技術者6人以上土木格付.Value = "A"ElseIf 土木許可区分 = "特" And 土木 >= 770 And 土木1 >= 2 Then '格付B→特定許可、770点以上、一級技術者2人以上土木格付.Value = "B"ElseIf 土木.Value >= 700 Then '格付C→700点以上土木格付.Value = "C"ElseIf 土木.Value > 0 Then '格付D→0点以上土木格付.Value = "D"End Ifそれぞれ「県外」「県内」コマンドボタンをつくりクリックイベントで実行してきたのですが、今回は各テキストボックスに入力すると自動でランク付けが出来るようにしたいです。ちなみに、他にもランク付けしたい項目があり、各テキストボックスは空欄で登録する場合もあります。・VBAユーザーフォーム上での検索・リストボックスに検索結果を表示したい。VBA勉強中の初心者です。必要に迫られており、おこがましいとは思ったのですが、どなたか教えて頂けないでしょうか?お願い致します。エクセルシートA列=番号 B列=社名 C列=担当者名 が一覧となっているデータです。ユーザーフォームには、テキストボックスx1 コマンドボックス(検索)x1 リストボックス① リストボックス②がありテキストボックスに社名の一部を入力して、コマンドボタン(検索)をクリックしたらリストボックス①にB列の社名 リストボックス②にC列の担当者名が表示される。というユーザーフォームの作成をしたいのです。現在は3000程の社名が入ってますが、これからも少しづつですが増える見込みです。ちなみに使用するエクセルは2003です。どうか、宜しくお願い致します。・ユーザーフォームについて教えて下さい。VBAユーザーフォームで、×印がある青色のツール(外枠)の色をかえたいのですがどうすれば変更できるのでしょうか?お分かりになられましたら宜しくお願いいたします。・Excel VBA ユーザーフォームのコンボボックスについての質問です。ユーザーフォームでコンボボックスとラベルを使用し、コンボボックスでシート1に書かれている名称を表示し、名称を選択するとラベルにシート2に書かれているコードが表示できるものを作成しています。シート1上で名称を追加すると自動的にコンボボックスに反映される方法はわかったのですが、シート2のコードの追加分を反映させる方法がわかりません。どうすればうまく関連付けすることができるでしょうか?Excelは2000です。Private Sub UserForm_Initialize() Dim x As String x = Range("A2").End(xlDown).Row With ComboBox1 .Style = fmStyleDropDownCombo .ListRows = 4 Dim s As String s = ("A2:A" & x) .RowSource = Worksheets("Sheet1").Range(s).Address End WithEnd Sub Private Sub ComboBox1_Change() Dim si As Integer With UserForm1 .Label1 = "" si = .ComboBox1.ListIndex ' ComboBox1 の何番目が選択されたかを得る Select Case si Case 0 ' 0番が選択 .Label1 = Worksheets("Sheet2").Range("A2") Case 1 ' 1番が選択 .Label1 = Worksheets("Sheet2").Range("A3") Case 2 ' 2番が選択 .Label1 = Worksheets("Sheet2").Range("A4") Case 3 ' 3番が選択 .Label1 = Worksheets("Sheet2").Range("A5") End Select End WithEnd Sub
●気になる商品を検索
●気になる話題を検索