• ベストアンサー

VB6でLISTBOXの複数列

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

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

  • ベストアンサー
  • s-uzen
  • ベストアンサー率65% (2051/3118)
回答No.2

VB6のリストボックスの場合 1行に複数項目とする場合は、各項目を1行に連結して追加、取り出す場合は各項目を切り出す操作が必要です。 各項目連結はスペースを使うか、下記のような方法などで。 複数の項目を指定位置に揃えて表示 http://hanatyan.sakura.ne.jp/vbhlp/listcont.htm 複数項目を扱いたい場合は、下記のコントロールを使うとできます。 ツールボックスにコントロールを追加設定して使用。 MSFlexGridの場合 http://hanatyan.sakura.ne.jp/vbhlp/MSFlexNO1.htm リストビューの場合(検索のみ) http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GWYH_jaJP275JP275&q=VB6+ListView  

takedono
質問者

お礼

ありがとうございます。とりあえずスペースを入れて表示するようにしました。選択はSplit関数で何とかなりそうです。

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

その他の回答 (1)

  • ESE_SE
  • ベストアンサー率34% (157/458)
回答No.1

(恐らくExcelの)VBAのリストボックスはExcelの機能を流用して拡張されていたのでしょう。 VBのListBoxコントロールは基本的に1次元配列しか格納できません。 ただ、Text以外にItemDataという項目も設定可能なので、内部データとしてなら同じ行にもう1件データを追加することが可能です。 また無理矢理データを複数突っ込みたいのであれば・・・ 数十個のスペースをセパレータ代わりにして連結、 データを使用する際にはこれを適当なところでSubStringで切り出しTrimをかけてデータ抽出するくらいの小技を使えば何とか・・・というところですね。

takedono
質問者

お礼

ありがとうございます。エクセルのVBAでできることはVBならできると思っていました。間違えでしたね。ありがとうございます。

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

関連するQ&A

  • VB6 2つのListBoxをソート

    VB6で約3000のデータをListBoxに入れて有ります。 ListBox1=ファイル名 ListBox2=ファイルアドレス と2つに分けてListBoxに入れて有り、このインデックス値は双方常に一緒でなければなりません。 ここで困ってしまったのが、Sortedはどうすれば良いのか?です。 片方ソートでも両方ソートでも順番(インデックス値)がばらばらになってしまいます。 そこで下記方法でListBoxを更に3つ追加して(1つをSorted)1つ1つソートしたインデックス順に並び替えたらソートに時間がかかってしまいました。 何か良い方法は無いでしょうか? (ListViewは経験が無いためこの方法の場合はやり方又は参考サイトを入れて頂けると助かります) Dim i As Integer Dim j As Integer Dim k As Integer k = LI1.ListCount - 1 For i = 0 To k LI3.AddItem LI1.List(i) LI4.AddItem LI2.List(i) LI5.AddItem LI1.List(i) 'SortedのListBox Next i LI1.Clear LI2.Clear For i = 0 To k For j = 0 To k If LI3.List(j) = LI5.List(i) Then LI1.AddItem LI3.List(j) LI2.AddItem LI4.List(j) Exit For End If Next j Next i LI3.Clear LI4.Clear LI5.Clear '(LI = ListBox)

  • VBAリストボックスへの複数列の項目追加について

    現在、VBAのリストボックスへの複数列の項目追加に苦戦しております。 まだまだ未熟の為、どうか皆様のお力をお貸し下さい。 手法等、間違えてる箇所があるかと存じますので、ご指摘と、また別に手法がございましたら、ご教授お願い致します。 現在、リストボックスへの複数列の項目追加の為、以下のように記述しておりますが、上手く動きません。 ※あらかじめ、UserForm1にリストボックス(ListBox1)と、コマンドボタンを作成しています。 ※Sheet1に、添付のように書いております。 Private Sub CommandButton1_Click() Dim rngTemp1 As Range Dim rngTemp2 As Range Dim rngTemp3 As Range With Sheets("Sheet1") .Activate Set rngTemp1 = .Cells(2, 2) rngTemp1.Select Set rngTemp2 = .Range(.Cells(2, 4), .Cells(2, 6)) rngTemp2.Select Set rngTemp3 = Union(rngTemp1, rngTemp2) rngTemp3.Select End With UserForm1.ListBox1.ColumnCount = rngTemp3.Count UserForm1.ListBox1.List = rngTemp3.Value 'ここでエラー End Sub ウォッチ式で見ると、rngTemp3には、rngTemp1の値しか入っておらず、その為にエラーとなっているようです。 が、rngTemp3.Selectの時点では、正常に選択出来ております。 (1)そもそもListプロパティで、離れたセルをリストボックスへ追加するのは無理なのでしょうか? ※Userform1.ListBox1.List=rngTemp2.Valueとすると正常に追加されます。 (2)このような場合を解決する手段は他にありませんでしょうか?(配列の手法などありましたら、教えて下さい。) ※ちなみに実際のデータ列は10列以上ある為、AddItemでは10列目でエラーとなり、無理でした。 環境は、Office2010になります。 説明がわかりづらく申し訳ありませんが、何卒よろしくお願い致します。

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

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

  • エクセルVBA ListBoxの並び替え:VBA初心者です

    Listbox.additemで、追加していったListを並び替えてListboxに表示したいのですが、可能ですか? 並び替えは、エクセルのユーザー設定リストの順番にしたいです。

  • リストボックスからリストボックスへ(複数列)

    データ読み込み済みのリストボックス1(4列)から空白のリストボックス(4列)へ、コマンドボタンをクリックしたらデータが追加されるコードを作成しました。 Private Sub CommandButton1_Click() Dim i As Long For i = 0 To 8 With ListBox1 ListBox2.AddItem .List(.ListIndex, i) End With Next i データは追加されましたが、縦方向にデータが追加され、 横方向に追加されませんでした。 どうすれば複数列のデータをそのまま複数列のリストボックスに追加できるでしょうか。 よろしくお願いします。 End Sub

  • ListBoxに値を追加していくには。

    Private Sub CommandButton31_Click() ListBox12.ColumnCount = 5 ListBox12.ColumnWidths = "4.0cm;4.0cm;2.0cm;3.0cm;2.0cm" End Sub Private Sub TextBox175_Change() SetList End Sub Private Sub TextBox176_Change() SetList End Sub Private Sub TextBox177_Change() SetList End Sub Private Sub TextBox178_Change() SetList End Sub Private Sub TextBox179_Change() SetList End Sub Private Sub SetList() ListBox12.Clear ListBox12.AddItem TextBox175.Text ListBox12.List(0, 1) = TextBox176.Text ListBox12.List(0, 2) = TextBox177.Text ListBox12.List(0, 3) = TextBox178.Text ListBox12.List(0, 4) = TextBox179.Text End Sub ここで、TextBox175~179の値をコマンドボタン1を押す度、 ListBox12の最終行の直下に挿入されていくようにしたいです。 列はそのままです。 1行目 (0,1),(0,2),(0,3),(0,4) 2行目 (1,1),(1,2),(1,3),(1,4) 3行目 (2,1),(2,2),(2,3),(2,4) どのようにやればいいでしょうか。

  • Excel VBA リストボックスの複数列表示の方法について

    すいません、エクセルVBAのユーザーフォームのリストボックスの表示方法について質問があります。 シートのセルに    A列   D列   G列 1行 りんご  赤   120円 2行 みかん  黄   130円 3行 すいか  緑 110円 4行 りんご  赤 160円 . ・・・  ・   ・・・ . と、50行まで値を入れます。 VBAでユーザーフォームを挿入し、 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "りんご" .AddItem "みかん" .AddItem "すいか" End With End Sub でコンボボックスの値を設定し、次に Private Sub ComboBox1_Change() Dim i As Integer For i = 1 To 50 If Cells(i, 1).Value = ComboBox1.Value Then With ListBox1 .ColumnCount = 3 .AddItem Cells(i, 1) End With End If Next i End Sub このときコンボボックスと同じ値の行について、 リストボックスにA列、D列、G列を表示させるにはどうしたらいいのでしょうか。 例えばコンボボックスで「りんご」を選択したときに、 リストボックスを りんご 赤 120円 りんご 赤 160円 と表示させたいのですが、 .AddItem Cells(i, 1) では一列だけしか表示できません。 Rowsorceを使ってみたりしましたが、どうにもうまく出来ませんでした。 よろしくお願いいたします。

  • リストボックスの列見出し(ExcelのVBA)

     ExcelのVBAでのリストボックスコントロールについての質問です。  リストボックスの列見出しを作りたいのですが、なかなか上手く行きません。リストボックスに項目を設定するのはExcelのシートから… ----- WorkSheets("Sheet1").ListBox1.ListFillRange = "A1:B2"  ↑(Sheet1のA1:B2のデータをListBox1に追加する場合)↑ ----- のようにするのではなく… ----- Dim MyList(1,1) ~~~(MyList配列にデータを代入) Userform1.ListBox1.Column = Mylist() -----  というように、コードから項目を追加しています。  そこで、列見出しを追加したいと思ったのですが… ----- ListBox1.ColumnHeads = True ----- と記述しても、列見出しは真っ白で、その下に項目が表示されるだけです。  列見出し専用の配列を用意しなければならないというような事はあるのでしょうか?  もしあれば、どのように定義すればよいのでしょうか。  ちなみに、用いているExcelの環境は『Microsoft Excel 2004 for Mac (11.5.6)』、VBAの環境は『Microsoft Visual Basic (11.5)』です。  我流で覚えてきたような知識ですので、とても常識的な事を聞いているかもしれないですが、回答宜しくお願いします。

  • VBAのリストボックス連動がうまく表示されません。

    例えば、エクセル表に下記のようなデータが入っているとします。 A列は項目であり、B列は項目内容数(D列以降の項目数)、D列にはA列項目の内容が入っています。しかし、この列は変動する為、変数で指定しています。 これをリストボックス1で、まずA列の内容を表示させて、その中で選んだ項目をリストボックス2でD列以降の行内容を表示させ、リストボックス2の値を取得したいのですが、リストボックス2がうまくい表示できません。 リストボックス1では .RowSourceを使ってセル指定して表示させています。 このようなケースがuserformに多数あり、for~の処理はできるだけ避けています。 例えばUserForm_Initialize()で次の通りです。 With ListBox1 .ColumnCount = 1 .BoundColumn = 1 .RowSource = Worksheets(wksheet).Range(Cells(2, item_No), Cells(item_max_cnt, item_No)).Address(External:=True) VBA初心者で恥ずかしい質問ですが、どなたかご教示宜しくお願い致します。m(_ _)m A列_B列__D列_E列_F列_G列_H列 … a_3__あ_い_う b_1__か c_5__さ_し_す_せ_そ

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

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

このQ&Aのポイント
  • PIXUSMG6930を使用してCDの表面に文字を書き込む方法について教えてください。
  • CDに文字を書き込むためにはどのような手順で作業をすれば良いのでしょうか?詳しく教えてください。
  • キヤノン製品のPIXUSMG6930を使用してCDに文字を書き込む方法を教えてください。
回答を見る

専門家に質問してみよう