• ベストアンサー

Excelマクロのコンボボックスに関して

マクロを初めて扱います。 どなたか詳しい方、ご教授ください。 Excelのシート上にActiveXのコンボボックスを作成しました。 このコンボボックスに同じブックの別シートのA列のX行目からY行目までを格納したいと考えております。 どうかコードの書き方をお教えいただけませんでしょうか?

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

>Excelのシート上にActiveXのコンボボックスを作成しました ActiveXコントロールとありますので フォームツールバーのコントロールと区別はついてるわけですね。 ま、別に確認するようなことでもないですが。。。(^^;;; ■Sheet1上に、Combobox1 があるものとする (1)Sheet2のA1からA9までのデータをセットする場合 Sheets("Sheet1").ComboBox1.List = Sheets("Sheet2").Range("A1:A9").Value (2)Sheet2のA1からA列データ最終行をセットする場合    (要するにA列のデータが増減する場合) Dim LastRow As Long LastRow = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row Sheets("Sheet1").ComboBox1.List = Sheets("Sheet2").Range("A1:A" & LastRow).Value (3)増減しても上記のようにするのは面倒な場合    (要するに、A列全てを対象にする場合) Sheets("Sheet1").ComboBox1.List = Sheets("Sheet2").Range("A:A").Value ■(2)の方法をお勧めします。 以上です。  

priiin
質問者

お礼

最終行をセットしたかったので(2)の方法で実現しました。 言葉足らずで失礼しました。 ありがとございました。

その他の回答 (2)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

コンボボックスのリストをA列のX行目からY行目で取りたいと言うことでしょうか でしたらプロパティのListFillRangeで設定できますよ。 参考 http://officetanaka.net/excel/function/tips/tips05.htm

参考URL:
http://officetanaka.net/excel/function/tips/tips05.htm
priiin
質問者

お礼

ありがとうございます。 最終行をセットしたかったので今回は別方法をとらせて頂きました。 言葉足らずですみませんでした。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

例えば、下記のようなことでどうでしょうか。 ActiveSheet.OLEObjects("ComboBox1").ListFillRange = "Sheet2!A1:A10"

priiin
質問者

お礼

ありがとうございます。 最終行をセットしたかったので今回は別方法をとらせて頂きました。 言葉足らずですみませんでした。

関連するQ&A

  • Excelマクロのコンボボックスについて

    マクロを初めて扱います。 どなたか詳しい方、ご教授ください。 Excelのシート上にActiveXのコンボボックスを作成しました。 そのコンボボックスに「あああ」という項目を追加したのですが、「あああ」項目が一番下に追加されてしまいました。 Me.ComboBox1.AddItem "あああ" どのように書けば、コンボボックスの最上部に追加されるのでしょうか? どうかコードの書き方をお教えいただけませんでしょうか?

  • Excelマクロのコンボボックスについて

    初めてマクロを扱います。 マクロに詳しい方、コードをご教授ください。 Excelマクロを使い下記の機能をシートに盛り込みたいと考えております。 【実現したいこと】 ・シート上にコンボボックスを作成し、コンボボックスで選択した項目で絞り込めるようにする。 ・コンボボックスに格納される項目は、A列の重複を除外し、昇順で並べ替えたもの。 ・またコンボボックスに格納する項目は日々レコード追加されるため、コンボボックスの中身にも随時反映するようにしたい。 ・コンボボックスには「全て表示」というアイテムを追加し、「全て表示」を選択すると、フィルターが解除される。 わかりにくいかもしれませんが上記のことを実現したいと考えております。 どうかお知恵をお貸しください!! よろしくお願いします!!

  • エクセル マクロ コンボボックスリスト

    sheet1の場所でボタンクリックでフォーム表示。その中でコンボボックスリストを作成。 sheet3にデーターをA列に作りました。 1)フォームの中のコンボボックスをクリックしてリスト表示させた い。マクロの記述を教えてください。 2)コンボボックスリストに表示した文字をsheet2に記録するボタンを作ったがマクロの記述を教えてください。

  • Excel コンボボックスについて

    現在ブックに"Sheet1" "Sheet2"が存在していて、 Sheet1にコンボボックス用のリスト一覧を作成して、 Sheet2にSheet1のリスト一覧を参照してコンボボックスを作成したいのです。 リストは、動的に変化できるようにA1~A65536まで使用できるようにしたい場合どのように、コードを作成すればよいのでしょうか。。。

  • エクセル VBA コンボボックスで検索

    エクセルVBA初心者です。 シート1行目には工場名、2行目に見出し、3行目からデータが記入されています。 2行目に見出しとして、A列には作業者名、B列に工事番号、C列から作業時間などが記入されています。 ユーザーフォームにコンボボックス、コマンドボタンを設置し、コンボボックスには工事番号一覧が表示されるようにするところまではできましたが、コンボボックスで工事番号を選択し、コマンドボタンを実行することで、1シート内の一致する行だけを表示したいのですが、いろいろなサイトを参考に試してみたのですがうまくいきませんでした。 同じ内容のシートが複数ありますが、シート毎での検索・抽出をしたいと考えています。 どのようなコードを作成したら良いのかご教授願えたら幸いです。 よろしくお願い致します。

  • Excelで、コンボボックスで選択したとき特定のマクロを動かす

    1つのシートにコンボボックス(フォームコントロール)を2つ並べてあります。  コンボボックス”ドロップ1”   コンボボックス”ドロップ2”  【選択肢】             【選択肢】  ・1回                ・A  ・2回                ・B  ・3回 とあります。それぞれのコンボボックスの選択肢は、別のシートに名前を定義して表示するようにしてあります。 その際、上の例だとマクロを6種類用意してあります。  (1) 1回A  (2) 1回B  (3) 2回A  (4) 2回B  (5) 3回A  (6) 4回B とあり、1つ目のコンボボックスで「2回」を、2つ目のコンボボックスで「B」を選んだ場合、 (4)のマクロを実行するようにするにはどのようにしたらよいでしょうか? ※ コンボボックスは両方選ばない限りはマクロを実行させません。 また、両方既に選択してあり、そのマクロが一度実行させた後、一方だけ変更しても他のマクロを実行させたいです。 また、本件とは別の内容となっていまいますが、コンボボックスなどが”フォームコントロール”と”ActiveX コントロール”と2種類あるのですが、どのように違うのでしょうか? ちなみにExcelは2007です。ご教授よろしくお願いします。

  • エクセル マクロ

    A列にエリア、B,C,Dにそのエリアの情報が格納されているエクセルファイルがあります。 エクセルマクロで、A列に入っているエリア(たとえば、東北、関東、関西、四国、九州など)ごとに、そのエリアの行をコピーして新規Bookを作成するというコードを書きたいのですが、どなたかご存知の方ご教授ください。

  • エクセルVBA 別シートからのコンボボックス連動

    エクセルVBA 別シートからのコンボボックス連動について Book1(多人数入力用ブック) ・入力シート ・データ用シート Book2(反映用ブック) ・シート1 Book1にコンボボックスが2列 テキストボックスが2列 * 6行のユーザーフォームを作成しました。 コンボボックス1 コンボボックス2 テキストボックス1 テキストボックス2 コンボボックス3 コンボボックス4 テキストボックス3 テキストボックス4 ・ ・ ・ 左のコンボボックスで「あ」が選ばれたときには、右のコンボボックスで「あ行の顧客」・・・というように連動させたいと考えております。 データ用シートのデータは、   A      B          C 1 あ あ行で始まる顧客 か行で始まる顧客 2 か 3 さ 4 た 5 な 6 Private Sub UserForm_Initialize() Dim c As Range ComboBox1.RowSource = "データ用シート!A1:A9" End Sub Private Sub ComboBox1_Change() 'Dim Rng As Range 'Dim i As Long i = ComboBox1.ListIndex If i > -1 Then Dim c As Range Set Sh = Worksheets("データ用シート") Set Rng = Worksheets("データ用シート").Range("B2:I30") ComboBox2.Value = "" ComboBox2.RowSource = Rng.Columns(i + 1).Address End If End Sub 上記コードですと、コンボボックス2が入力シートのデータを表示してしまいうまくいきません。 欲をいえば、 Book1(多人数入力用ブック)入力シートの特定セルに コンボボックス2・テキストボックス1 コンボボックス4・テキストボックス3というように続けて1セルに反映 Book2(反映用ブック)シート1に コンボボックス2・テキストボックス1・テキストボックス2 を各1セル 1行に反映させたいと考えております。 まったく知識がないのですが 仕事上どうしても必要となったので、各種サイトを見よう見真似でやっております。 ご助力いただければ幸いです。

  • コンボボックスの貼りつけ excel

    vba初心者です。excel帳簿を作っております。 科目選択時にリストが28個あるプルダウンを使っておりましたが選択するのが大変だったのでコンボボックスにしたら28個全て表示されるようになり選択が楽になりました。 このコンボボックスのLinkedCellはD4です。 コンボボックスをD4の上に表示してD4セルにピッタリはめ込んでいる感じに見えます。 D4以下150個、D列にコンボボックスを貼りつけたいです。 コピーして貼り付けてもLinkedCellはD4のままですので、貼りつけたコンボボックスのプロパティを150回変えないといけないのかと思うと気が遠くなります。 このコンボボックスを何か登録して、「コードの表示」あたりで何かやれば何とかなるのではないかと思ったのですが、何か手立てがあれば教えてください。 このコンボボックスを同じブックの別のシートにも使いたいと思っております。

  • コンボボックスで選択した値をシートに転記する

    エクセルを使用して表を作成していますが、うまくいきません。 作りたいのは下記のものです。 sheet1にリストを作成  (リストはA-F列で300行程、また先頭A列は任意の不連続番号) sheet2に表を作成 sheet2のA1にコンボボックスを作成 コンボボックスにはsheet1のリストのA,B列を表示させたい またコンボボックスで選択した行のデータをsheet2にコピーさせる。 と、なるようにしたいのですが、どのようにしたら良いのでしょうか? コンボボックスのリンクから参照したVLOOKUPだとセルのデータを上書きされると、式がなくなってしまうので、VBAで作成したいです。

専門家に質問してみよう