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

VBAユーザーフォームについて質問

このQ&Aのポイント
  • エクセルのユーザーフォームでコンボボックスで選択した値に応じてテキストボックスの内容を別のセルに転記したいです。
  • プルダウン選択せずにテキストボックスに数字を入力した場合にエラーメッセージを表示したいです。
  • VBAのコードを一部載せます。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

>星の部分がいまいちどのようにコードにすればよいかわかりません >ちなみに行は変数で指定はしていません。  '// Ifの次はElseが普通ですが、  '// TextBox1が未入力の場合に備えて、ElseIf  '// にしています。未入力のケースを忘れるのが多いです。  If TextBox1.Text = "01" Then   Cells(11, retu).Value = Me.仮1.Value  ElseIf TextBox1.Text = "02" Then   Cells(12, retu).Value = Me.仮2.Value  End If  '// TextBox1の場合分けが多い場合は、  '// 次のような書き方が有効です  Select Case TextBox1.Text   Case "01"    Cells(11, retu).Value = Me.仮1.Value   Case "02"    Cells(12, retu).Value = Me.仮2.Value   Case "03"    Cells(13, retu).Value = Me.仮3.Value   Case "04"    '// 同様に続ける      Case Else    '// 未入力やおかしなデータへの対応です。    '// Elseが必要と思っている人は少ないですね。    '// 1行空行を作って、処理は書かないでいいでしょう。  End Select でしょうか。TextBox1は、01、02を入力するテキストボックス名です。 エディタに打ち込んだだけです。スペルミスなどがあるかもしれません。 Excel VBAの勉強をされているそうですが、 Excel VBA 入門講座へようこそ!! http://excelvba.pc-users.net/ MOUGモーグ https://www.moug.net/tech/exvba/ などを見られてはどうでしょうか。急がば回れです。 ご参考に。

noname#239531
質問者

お礼

色々と丁寧に教えてくださりありがとうございます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

画像も出てないし、やりたいことがはっきりしない。 「マルチメディアファイルは削除されたか見つかりません。」 ーー 小生が、勝手に想像して作ってみた。 質問者のコードや既回答と違うので、良くも悪くも参考になるのでは。 ーー ・ユーザーフォームを1つ挿入。(操作) ・そこにテキストボックスを1つ貼り付け(操作) ・またコンボボックスを1つ貼り付け(操作) ・そこにアイテムを2つ追加 (VBA)デザインモードでのユーザーフォームのコードの表示をクリックして出る画面に) Private Sub UserForm_Initialize() UserForm1.ComboBox1.AddItem "01" UserForm1.ComboBox1.AddItem "02" End Sub ・コマンドボタンを1つ貼り付け。(操作)  フォームへの入力が(1人分)終わったことをしらせるため、必要かと思う。 ・コマンドボタンのクリックイベント(VBA)デザインモードでのコマンドボタンをダブルクリックしてして出る画面に) Private Sub CommandButton1_Click() ’MsgBox UserForm1.ComboBox1.Text Select Case UserForm1.ComboBox1.Text Case "01" Range("A11") = UserForm1.TextBox1.Text Case "02" Range("A12") = UserForm1.TextBox1.Text End Select End Sub == 実行について Sub/UserFormの実行 シートにユーザーフォームが現れる。 テキストボックスに「山田」と入力 コンボボックスで「01」を選択 コマンドボタンをクリック A11に「山田」がセットされる ーー ’次に テキストボックスに「佐藤」と入力 コンボボックスで「02」を選択 コマンドボタンをクリック A12に「佐藤」がセット == 雑感 >if文を使うのだろうと思う いろいろあずぜよ。わざとCaseにした。 >Meキーワードについて Googleで検索して、よく勉強してください。 「excel vba Meキーワード」」 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12134815137 私は、今のところなるべく使わない。 ーーー 質問者は、そばに指導者が居ないようで、なんとなく危なっかしい感じ。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

元の転記する行を「gyou = 4」としています。 TextBox1に入力があれば、01、02に対応して、11、12行に書き込みます。 TextBox1に入力がない時どうしたいか書いてないので、初期値の「gyou = 4」の4行目を使いました。コード中のコントロール名は実情に合うように変更してください。  Dim retu As Integer  Dim gyou As Integer  retu = Cells(3, Columns.Count).End(xlToLeft).Column + 1  gyou = 4   '// 元の書き込む行(何か定義してる?)    If ComboBox1.ListIndex = -1 Then   MsgBox "選択していませんよ"  Else   If TextBox1.Text = "01" Then    gyou = 11   ElseIf TextBox1.Text = "02" Then    gyou = 12   End If   Cells(gyou, retu) = "書きたいデータ"  End If

noname#239531
質問者

補足

回答いただきましてありがとうございます。もう1点質問なのですが Cells(3, retu).Value = Me.txtComboBox1.Value ←社員を選択 Cells(4, retu).Value = Me.txtsuzuki.Value  ←売れた件数 Cells(5, retu).Value = Me.txttoyota.Value  ←売れた件数 Cells(6, retu).Value = Me.txthonnda.Value   ←売れた件数 *Cells(11, retu).Value = Me.仮1. Value *Cells(12, retu).Value = Me.仮2.Value 星の部分がいまいちどのようにコードにすればよいかわかりません^^; ちなみに行は変数で指定はしていません。 ご回答いただけましたら大変助かります。よろしくお願い申し上げます。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

>テキストに入力した数字は、01を選択したら11行、02を選択したら12行に転記できるようにしたい どの列に入力するか書かれていないので、retuとし、テキストをTextBox1とすると、 Dim rw As Long Const retu = 2 If ComboBox1.ListIndex <> -1 Then  If ComboBox1.Text = "01" Then   rw = 11  ElseIf ComboBox1.Text = "02" Then   rw = 12  End If  Cells(rw, retu) = TextBox1.Text End If でしょうか。質問の意味を把握できていない気がします」。 >テキストボックスに数字だけ入力して、プルダウン選択してないとエラ~メッセージも出るようにしたいです テキストボックスとは、コンボボックスの選択窓のことでしょうか。 コンボボックスのStyleプロパティが「fmStyleDropDownCombo」の場合、Listにないデータを入力できます。Listからのみの選択にする場合は「fmStyleDropDownList」にする必要があります。 fmStyleDropDownLisにしています。未選択は、ListIndexでチェックしています。 If ComboBox1.ListIndex = -1 Then  MsgBox "選択していませんよ" Else  MsgBox ComboBox1.Text & "を選択しました" End If

noname#239531
質問者

補足

回答ありがとうございます! 質問が下手で申し訳ありません。 イメージ画像を追加しておきます。 ちなみに列は変数で宣言しております。 retu = Cells(3, Columns.Count).End(xlToLeft).Column + 1 1つのテキストボックスに選択により さらに転記するセルを変えたいのです。 01だとしたら、11行 02だとしたら12行 よろしくお願いします

関連するQ&A