• ベストアンサー

セルのデータをListBoxに表示したい。

エクセルVBAで作りたいのですが A列に同じ文章が13行、その下に違う文章で13行、又その下に違う文章で13行・・・・・と入っています。この文章の各先頭行だけ集めてUserFormの中のListBoxに表示させたいのです。わかりづらいかもしれませんがよろしくお願いします。 A列 あ あ  13行 あ ・ ・ い い  13行 ・ ・ う う  13行 ・ ・   ListBoxに あ い う え お ・ ・ と表示したいのです。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

#2ですが、指定したシート名を反映させるのを忘れました。 13行に限らず、同じデータが続いているのを1つとする場合の例ですが、 フォームのInitializeイベントに次のように記述します。 指定した範囲内に空白セルがあれば、その直前までをリスト範囲とします。 これで如何でしょうか。 Private Sub UserForm_Initialize() Const ShName = "Sheet1" ' <---- RowSoruceのシート名指定 Const Hani = "A2:A100" ' <-----  〃  の範囲を指定 Dim Rng As Range For Each Rng In Worksheets(ShName).Range(Hani)   If Rng.Text = vbNullString Then Exit For   If Rng.Value <> Rng.Offset(1).Value Then     ListBox1.AddItem Rng.Value   End If Next Rng End Sub

260314
質問者

お礼

早速の回答有難う御座います。お陰様でコードを貼り付けた所表示する事ができました。今後ともよろしくお願いします。

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

その他の回答 (2)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

13行に限らず、同じデータが続いているのを1つとする場合の例ですが、 フォームのInitializeイベントに次のように記述します。 指定した範囲内に空白セルがあれば、その直前までをリスト範囲とします。 これで如何でしょうか。 Private Sub UserForm_Initialize() Const ShName = "Sheet1" ' <---- RowSoruceのシート名指定 Const Hani = "A2:A100" ' <-----  〃  の範囲を指定 Dim Rng As Range For Each Rng In Range(Hani)   If Rng.Text = vbNullString Then Exit For   If Rng.Value <> Rng.Offset(1).Value Then     ListBox1.AddItem Rng.Value   End If Next Rng End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

完全に表の書式が固まっていて、それが絶対にずれることがないとかで決め打ちでいいというのであれば ListBox1.Clear ListBox1.AddItem (Range("A1")) ListBox1.AddItem (Range("A14")) ... もうちょっとスマートにするなら For x = 1 To UsedRange.Rows.Count Step 13 Me.ListBox1.AddItem (Cells(x, 1)) Next x 本来は各ブロックの先頭に何かの目印を置いて、その行もしくはその次の行のデータを取り込むという形にする方が良いかと思います。

260314
質問者

お礼

申しわけ有りません。データが増減する事を書き忘れました。ja7awuさんのコードを採用させて頂きます。有難問う御座いました。

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

関連するQ&A

  • セルに追加されるデータをListBoxに表示させたい

    VBA初心者です エクセルのシートに入力されたデータを、ListBoxに表示させるプログラムを作っているのですが セルB5以下に入力されるB列のデータを、追加されたら、自動的にリストボックスにも追加されるというプログラムを作りたいと考えています ご指南、宜しくお願い致します

  • ListBoxへの表示 及び Labelの文字色変更について

    こんばんわ。いつもお世話になっています。 下記質問事項についてよろしくお願い致します。 1.ListBoxへの表示 ListBoxへ、セルA列に入力している文字を表示させたい。 しかし、A列には追加があるので、決まったRangeではない。 2.Labelの文字色変更 Range("a1")の文字色書式が赤なら、UserFormに貼り付けているLabelの文字色も 赤にしたい。また、CommandButtonの表示色も同じく変えたい。 よろしくお願いいたします。

  • Excelで質問です。ListBoxの項目を別bookから読込むには

    Excelで質問です。ListBoxの項目を別bookから読込むには VBA初心者です。 book-AのListBox1からbook-Bのセルの項目を読み込むことは可能なのでしょうか。 Excel2003です。 book-AのUserForm1に下記のコードを実行しても構文エラーになってしまいます。 book-Aとbook-Bは同じフォルダに入っています。出来ればbook-Bを閉じた状態で実行できれば良いのですが Private Sub UserForm_Initialize() ListBox1.RowSource =[book-B.xls]Sheet1!A1:A10 End Sub

  • エクセルのListBoxの2列目のデータをセルに!

    ListBoxを複数行複数列にして、そのうちの2列目の各行にあるセルに取得した中身のデータを転記したいのですが、やり方が分かりません。基本的な質問で申し訳ないですが、アドバイスなど頂けると有難いです!

  • フォームのリストボックスに値を表示させたい

    VBA フォームのリストボックスに値を表示させたい A1→aaa A2→bbb リストボックスに上記の値を表示させたいなら、 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "Sheet1!A1:A2" End Sub で出来ますが、シート上のセルで表示する値を指定するのではなく、VBA上で、リストボックスに表示させる値を指定したいのです。 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "aaa,bbb" End Sub を実行すると、VBA実行時エラー380になってしまいます。 UserForm1.ListBox1.RowSource = "aaa;bbb" もダメでした。 ご回答よろしくお願いします。

  • ListBoxのBackColor変更

    EXCEL2007のVBAにて質問です。 ユーザーフォームにリストボックスを配置して、選んだ物によって リストボックスの背景色を変更しようとしているのですが、うまくいきません。 例えばlistbox1を以下の様にセットし、 Private Sub UserForm_Initialize() UserForm1.ListBox1.AddItem ("ピンク") UserForm1.ListBox1.AddItem ("白") End Sub 下記の通り選んだ項目で背景色を変えたいのですが、 Private Sub ListBox1_Click() '選んだ項目で色変え If UserForm1.ListBox1.ListIndex = 0 Then UserForm1.ListBox1.BackColor = RGB(255, 128, 128) 'ピンクなら背景をピンクに Else UserForm1.ListBox1.BackColor = RGB(255, 255, 255) '白なら背景を白に End If End Sub クリックして項目を選択しても背景の色が変わりません。 何か見落としている事があるでしょうか? 又はやり方が悪いのでしょうか? お教え頂けると助かります。 以上、宜しくお願い申し上げます。

  • セル値が指定行のセル値とマッチしたら先頭列へ移動

    エクセルを開いたらA1セルの値が5だったら2行目のA1セル値とマッチしたG2 5の値の列が先頭列へ移動するようにしたいのですがVBAコードが解る方宜しくお願いします。

  • コンボボックスのリスト内容表示の仕方

    エクセル マクロ VBA の質問です。ユーザーフォーム(UserForm1)にあるコンボボックス(ComboBox1)にリストを表示したいのですが。 全部という項目と(これはできてます) エクセルのシートA4からA列の空白行までの値を項目として表示したいのですが、いまいちうまくいきません。 教えていただけると助かります。

  • VBAのListBoxで複数選択してExcelの1つのセルに反映

    いつもお世話になります。 出来るか教えて欲しいのですが、 UserFormに「ListBox」と「Commandbutton」があります。 「ListBox」には5つの選択肢がありますが、これを複数選択可に して、「Commandbutton」をクリックすることにより、 Excelの1つのセルに「ListBox」で選択した項目を反映させることは 出来ますか? 出来る場合どのようにすれば宜しいでしょうか?

  • VB6でLISTBOXの複数列

    こんばんは。VB6でListBoxを使うとき、AddItemでListBox内に追加できるのですが、右に更に列を増やすにはどうしたらいいのでしょうか? VBAでしたら ListBox1.ColumnCount = 2 ListBox1.BoundColumn = 2 ListBox1.AddItem Range("A1") ListBox1.List(1, 1) = Range("B1") こんな感じにできていたのですが、VB6だとよく分かりません。 初心者なのでできれば簡単に教えてもらいたいのですが。 よろしくお願いいたします。

専門家に質問してみよう