ユーザーフォームでのコンボボックスについて

このQ&Aのポイント
  • ユーザーフォームでのコンボボックスについて調査しましたが、解決策が見つからなかったため、質問させていただきます。
  • VBAの学習中に、ユーザーフォームでのコンボボックスの理解が難しいと感じました。
  • 具体的な例を挙げながら説明します。SHEET1には「月」「日」「曜」という3つのコンボボックスがあります。これをSHEET2のリストに反映させたいですが、うまくいきません。また、SHEET3に表紙とコマンドボタンを配置し、ボタンをクリックするとSHEET1が開き、ユーザーフォームも表示されることは可能でしょうか?
回答を見る
  • ベストアンサー

ユーザーフォームでのコンボボックスについて。

同じような内容の質問を探したのですが、解決の糸口がつかめず質問させていただきます。 VBAは初挑戦なんですが、本とネットではなかなか理解しづらいところがあって・・・。 自分の作っているフォームとは多少違いますが、説明を簡単にするために例を挙げさせていただきます。 まずSHEET1において、ユーザーフォームに3つのコンボボックスを配置しています。それぞれ、「月」「日」「曜」とします。 これを、SHEET2においてあるリスト「1~12」と「1~31」「月~金」にそれぞれ反映させたいのですが。 それを一つめのデータとして、「月」をA1、「日」をB1、「曜」をA2にそれぞれ配置して、二つめのデータはA3から始めたいのですが。 あともうひとつ。 SHEET3に表紙をおいて、コマンドボタンを配置し、そのボタンをクリックすると、SHEET1が開くと同時に、上記のユーザーフォームが出るってコトはできるのでしょうか? ややこしくてすみません。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

(1)コンボボックスのリストをシートから反映 ※ついでにSHEET3に表紙をおいて、コマンドボタンを配置し、そのボタンをクリックすると、SHEET1が開くと同時に、上記のユーザーフォームが出るようになってます このモジュールはSheets(3)に置いたボタンに書いてください。 Sub ボタン1_Click() Dim f(), y As Integer, i As Integer y = 1 i = 1 Do   ReDim Preserve f(i)   f(i - 1) = Sheets(2).Cells(y, 1)   i = i + 1   y = y + 1 Loop Until Sheets(2).Cells(y, 1) = "" Sheets(1).Activate Load UserForm1 UserForm1.ComboBox1.List = f() UserForm1.Show End Sub f()で、リストの値を取得して、コンボボックスのリストに設定しています。 この場合はSheets(2)のA列から取得しています。 (2)それを一つめのデータとして、「月」をA1、「日」をB1、「曜」をA2にそれぞれ配置して、二つめのデータはA3から ※これは、Sheet(1)に入れると仮定します Private Sub CommandButton1_Click() Dim y As Integer Sheets(1).Select If Range("A1") = "" Then   y = 1 Else   y = Range("A65536").End(xlUp).Row + 1 End If   Cells(y, 1) = Me.ComboBox1.Value   Cells(y, 2) = Me.ComboBox2.Value   Cells(y + 1, 1) = Me.ComboBox3.Value   Me.ComboBox1 = ""   Me.ComboBox2 = ""   Me.ComboBox3 = "" End Sub もっと間単にも出来ると思いますが、すべて汎用性を持たせてみました。 (2)ではコンボボックスは閉じないで、2つ目のデータを続けて選択できるようにしています。 なので、登録ボタンの他にキャンセルボタンを設定し、ユーザーフォームを閉じるようにするといいと思います。

otocchi312
質問者

お礼

返事が遅くなり、まことに申し訳ありません。 それとありがとうございます。 とりあえず、自分でごちゃごちゃ作ったのはおいといて 新規に試用してみたいと思います。 本当にありがとうございました。

関連するQ&A

  • ユーザーフォームのコンボボックス

    エクセルのユーザーフォームでの質問です。 コンボボックスの項目についてsheet2のB2~B10を選択したいのですが、このユーザーフォームはsheet1で使うもので、プロパティのrowsource欄にセルを選択できません(やり方が分かりません)。 どう入力したら別シートのセルをコンボボックスに反映出来るのでしょうか??

  • ユーザーフォーム上にコンボボックス作成

    ここの書き込みでも何度も書きましたが、まだ解決できません。 sheet1:にボタンをクリックすると、ユーザーフォームが現れ、その上にコンボボックスを作成しました。 sheet2:には、リストの項目を書いています。それをコンボボックスに表示させたいのですが、上手くいきません。すいません何度、本当に知りたいです 下記を記述しても表示できません。 Private Sub 記入フォームAC_Initialize() For I = 0 To 7 コンボA.AddItem Worksheets("データ").Cells(I + 2, 2).Value Next End Sub

  • excelVBAのコンボボックスについて

    excelVBAのコンボボックスについて質問です。 ユーザーフォームに設置したコンボボックスに違うシートの特定範囲を設定するには どのようにプログラムすればよろしいでしょうか? 自分なりにいろいろ調べてみたのですが解決できませんでした。 要約すると ユーザーフォームはsheet1からボタンで起動させ(ここまでは苦もなくできました)、でてきたユーザーフォームにあるコンボボックスにsheet2にある特定範囲 また、この特定範囲をデータのある範囲だけ(データが追加されれば自動でそれを取得する)に設定することは可能ですか?

  • ユーザーフォーム上のコンボボックスのリンク先はどうやって指定?

    エクセル97です。ユーザーフォームにおいたコンボボックスに表示させたいワークシート上のリスト、およびコンボボックスで選択された値をリンクさせたいセルの指定方法がわかりません。オプションボタンやチェックボックスのリンク先指定方法もわかりません。またユーザーフォームには「OK」「キャンセル」ボタンもないのでしょうか? エクセル95のときはダイアローグシートにコンボボックスを置き、コントロールの書式設定で簡単に指定が出来たのですが、97に変えてからは、敢えてエクセル5.0のダイアローグを挿入しないといけないようなので、出来ればユーザーフォームで作ってみたいのです。どうかよろしくお願いします。

  • エクセルVBAのユーザーフォームのコンボボックス

    エクセルVBAのユーザーフォームのコンボボックスの入力と ファイルの保存で質問です。 エクセルVBAで ユーザーフォームのコンボボックスを使用して 1月から12月までを選択してもらい、 選択した月を コマンドボタン押した際に、 セルにその値を入力するような マクロを作成しようとしています。 またコンボボックスは標準で6月が表示されるようにしたいと思います。 ユーザーフォームのコードの一部です。 Private Sub UserForm_Initialize() Dim m As Integer For m = 1 To 12 UserForm1.ComboBox1.AddItem m Next ComboBox1.ListIndex = 6 Private Sub CommandButton1_Click() 'ユーザーフォームを閉じる Unload UserForm1 mold  '↑フォームを閉じた後に実行される標準モジュールのマクロ名です End Sub 標準モジュールのコード 名称 「mold」 Sub mold() ActiveWorkbook.SaveAs _ Filename:="C:\_" & UserForm1.ComboBox1.Text & "月", _ FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close ThisWorkbook.Activate ' End Sub の様に作成して実行してみたのですが、 コンボボックスで11月を選択しても 6月のままのファイルになってしまいます。 どのようにしたら、 コンボボックスで選択した値を ファイル名として保存できるでしょうか? 全部のコードを記載しますと 長くなってしまうと思い、 関連するコードを記載して質問しました。 分かりづらい所もあるかと思いますが よろしくお願いします。

  • Excel VBA ユーザーフォームのコンボボックスに表示する値の入力方法

    Excel Xを使用して、VBAのユーザフォームにコンボボックスを作りましたが、どうしてもコンボボックス内に表示する値の入力方法が分かりません。 WEBや本などで「これ」と思われるものを実験していますが、どれも表示することができません。 できるだけ詳しく教えていただけませんか? したいことは、  cbocenter というコンボボックスに値を出します。  値は List シートの A2 から A18 に入力済みです。  それと値から選択した値を data シートの J列 に  表示させたいのです。(行の指定はできています) 本当に困ってます。よろしくお願いします。

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

  • ExcVBAについて、コンボBOXの項目をセルに記録する

    ユーザーフォーム1にコンボBOX1に氏名を記録させてあります。 同じくユーザーフォーム1にコマンドボタン1で入力ボタンをつくってあります。sheet1にはVBエディタのフォームよりコマンドボタン2を作成しsheet1にコンボBOXを表示させるようにしています。 そこでコンボBOXの氏名1をsheet1のA3にコマンドボタン1を使い記録させます。後にA4に氏名2を記録させます。 というように、Aの欄に記録、記録としていきたいのですがコードが判りません。どのようなコードを使えば記録がA2、A3、A4と記録できるのでしょうか教えてください。ちなみにA1だけに記録は出来ます。 宜しくお願いします。

  • Excel ユーザーフォームのコンボボックスについて

    始めまして、マクロに関してはまだまだ勉強中なのですが、ユーザーフォームのコンボボックスについてつまづいてしまい、皆さんにご教授頂ければと思います。 一つユーザーフォームを作成後、そのフォーム内にコンボボックスを配置し、リストから項目を選択できるようにしたいと考え下記のように記述したのですが、ユーザーフォームを実行してもフォームは表示されてきますが、ボックスを選択してもリストに項目が表示されてきません。 Private Sub cmd入力_Click() End Sub Private Sub 選択グループCombo_Change() With 選択グループCombo .AddItem "初級" .AddItem "中級" .AddItem "上級" Private Sub cmd閉じる_Click() Unload Me End Sub この記述自体が間違っているのでしょうか。 宜しくお願いします。

  • Excel ユーザーフォームでコンボボックスを使用してデータ入力

    Excelのユーザーフォームでコンボボックスを使用して、シートのデータを表示しています。 コンボボックス:ComboBox1 テキストボックス1-3:TextBox1-3 コンボボックスのRowSource:シート名!A2:C100 コンボボックスの変更時の動作: Me!TextBox1.Value = ComboBox1.Value とここまではできたんですが、テキストボックス2にシートのB列の値を、テキストボックス3にシートのC列の値を入れたいのですが、 どのようにしたらいいのでしょうか?

専門家に質問してみよう