• ベストアンサー

ExcelVBA でリストリストボックスに列見出しをコーディングでつける

エクセルVBAのフォームにリストボックスを作り、データーベースから読み出したデータを表示させています。 この時、各列にテーブル名とはちがう列名をつけたいのですが、シートに記述するのではなく、コーディングでつける事は出来ませんか? ControlTipTextに「test1;test;test3;」と指定してみたりしましたが、駄目でした。 どなたかご教授、あるいは出来ません、シートに隠しか方法はありません、と全否定をしてください。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

Wendy02 です。配列で入れる方法を考えてみましたが、できませんでした。 結局、他の方法としては、ListBox の 上に、白のLabel をそれぞれのColumnにあわせて、表示するぐらいしか、思いつきません。(これは、論外でしょうね) 列見出し(フィールド)は、もともと、Excelのワークシートの、データベース用の仕様のひとつだから、Rangeオブジェクトでしか、ListBox の Header に入れることは、出来ないようです。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

結論としては、#2 の Wendy02 さんが回答されているとおりです。 代替案(論外かも?)として、Windowsコモンコントロールの ListView コントロールは使えませんか?こちらは、ColumnHeaders.Add で簡単に列見出しを設定できますが。 ツールボックス「その他コントロール」-「Microsoft ListView Control 6.0」でフォームに貼り付けます。kこれが見当らないない場合、参照設定で、以下にチェックすると使えるようになります。 「Microsoft Windows Common Controls 6.0 (SP*)」 (*は環境により異なる) ListView コントロールは Comctl32.ocx または MsComctl.ocx に含まれていますが、これは Windows98 以降の OS には最初から英語版が入っているため、多くの環境では何もしなくても問題ないはずです。しかし、100%確実とは言えません。 問題がある場合は、VB6.0 用ランタイムパッケージを入手し、インストールすればよいのですが、参考URLで OCX だけ入手することが可能です。 また、ListViewコントロールの解説ページも紹介しておきます。ACCESSで解説されていますが、基本的にレコードがセルデータになる他はEXCELでも同様です。

参考URL:
http://www.tsware.jp/study/indexv10.htm,http://www.runan.net/program/runtime/activex.html
komakusa
質問者

お礼

ごめんなさい お礼が非常に遅くなりました ありがとうございました

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

VBAのフォームというのは、曖昧なのですが、ユーザーフォームのことでしょうか? >各列にテーブル名とはちがう列名をつけたい リストボックスに、列の見出しに違う名前をつける方法というのは、特別にないと思います。 ヘルプには以下のように書かれています。  「列見出しには、リストの 1 行目のデータ項目が使われます。列見出しに使うデータ項目を特に指定することはできません。」 別の臨時の場所に、コピーして、列見出しを設けるしかないのではないか、と思います。 ただ、私がレスつけるつけないに関わらず、私も、何か方法がないか探してみるつもりです。 ところで、ControlTipText というのは、ぜんぜん、目的の違うものですが、お分かりですか?ControlTipText というのは、ユーザーフォームの該当する場所に、マウスを持っていくと、ポップアップが現れる機能です。

komakusa
質問者

お礼

ごめんなさい お礼が非常に遅くなりました ありがとうございました

関連するQ&A

  • リストボックスの列見出し(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)』です。  我流で覚えてきたような知識ですので、とても常識的な事を聞いているかもしれないですが、回答宜しくお願いします。

  • ExcelVBAで作成したフォーム内のリストボックスの見出し表示

    ExcelVBAで作成したフォーム上のリストボックスに見出しをつけたいのですがうまくいきません。御教示願います。 リストボックスのプロパティー設定 ColunmCount = 3;3列作成 ColumnHead = True VBA内容 ListBox1.RowSourceType = "Value list" ListBox1.RowSource = "test1;test2;test3" と作成したのですが、「型が一致しません」と返答されます。 見出しを表示させる為にはどうしたら良いでしょうか? 御教示の程お願い致します。

  • Access2000 複数列のリストボックス

    Access2000を使っています。 複数列で構成しているリストボックスの任意の行をVBAで選択状態にしたいのですが、 どうすれば可能でしょうか? 例えば2行目を選択状態にしたい場合、列数=1のリストボックスであれば lstTEST = lstTEST.ItemData(1) とコーディングすれば2行目が選択状態になってくれたのですが、 列数≧2のリストボックスだと、同様にコーディングしてもダメでした。 これはもう無理なこととあきらめるしかないでしょうか?

  • ExcelVBAでユーザーフォーム内のリストボックスの設定について

     教えてください、ExcelVBAでユーザーフォーム内にリストボックスを作りました。 複数列・複数行のワークシートデータを参照する設定です。  列は12列で、一番左の列に番号をふってあります。  行は31行で、一行目がタイトル表示してあります。  質問なのですが、このリストボックスは全列・全行表示する大きさでユーザーフォーム内に作成してあるのですが、いざマクロを動かすと幅は問題ないんですが、高さが縮んで自動的にスクロールが表示されます。  ユーザーフォームを大きくしてリストボックスも大きくしてやっても同じです。 このリストボックスの高さを固定させる設定はどうすれば良いでしょうか。

  • Excelで、リストボックスの値によってVBAの記述を変えたい

    エクセルの表(データベース)を 並び替えるマクロを作っています。 コマンドボタンを押したらあらかじめ登録された 条件で並び替えされる、というところまではできました。 (ここでいう登録とは私が条件指定してVBAに記述したものです) そこで質問なのですが、ユーザーフォームの上で 並び替えの条件(優先順位・降順、昇順)をユーザーに 指定してもらい、ボタンを押したら並び替えされる、 というものを作りたいのですが可能でしょうか。 なぜこんな面倒なことをするかというと、 複数のユーザーが扱うデータベースで、 並び替えの操作を簡略化したいのと、 間違った操作によるデータベースの破壊を 防止したいからです。 まずユーザーフォーム上のリストボックスの中に 優先順位をかける項目を入れておき、それを3つ 作りました。(並び替えの条件が3つまであるので) 次に各リストボックスの横にラジオボタンを置き、 降順、昇順を指定できるようにする。 (ここで、ラジオボタンのどちらかしか選択できないように したいのですがその方法もわからないので教えてください) そして、それぞれの指定された結果でVBAの記述(値) を変えてコマンドボタンを押したら並び替えされる、 という風にしたいのです。(あくまでイメージですが) Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, ・・・とつづく記述で 上の記述のRange("A2")と、xlDescendingの値を ユーザーフォーム上で選んだ結果によって 変更したい、ということなんですが、こんなことって 出来るものでしょうか。もしくは同じ様な事を 可能な書き方とかがあれば教えて頂きたいです。 よろしくお願いします。

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

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

  • リストボックスのスクロールバーをマウスで動かしたい

    エクセル2007です。 Sheet1のA列に 1行目から順に 1 2 3 4 5 6 7 8 9 10 といれました。 ユーザーフォームを新規作成し、リストボックスを設置しました。 VBAコードは、 Private Sub UserForm_Initialize() Me.ListBox1.RowSource = "Sheet1!a1:a10" End Sub にしました。 VBE画面でF5を押して、フォームを表示させるとリストボックスにスクロールバーが表示されますが、 フォームをクリックして、マウスホイールでぐりぐりしても、リストは動きません。 画像のように、4にカーソルをあて、グリグリしてもダメです。 どうしたら動くようになるのでしょうか?

  • リストボックスに複数列表示したい。

    こんにちわ。 いまASP.Net 2005でWebフォームにSQLServerのテーブルの内容を 表示しようとしています。 そこでlstABC.DataSource = "データセット名"としたのですが, テーブルの先頭カラムしか表示されません。 そのテーブルには2列あり,2列とも表示したいのですができません。 どうすればリストボックスの列を複数にして,2列とも 表示できるのでしょうか? 教えてください。よろしくお願いします。

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

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

  • リストボックス内の表示

    エクセル2000VBAです。 ユーザーフォームのリストボックスに複数列(No,日付,氏名,金額,摘要)のデータを表示させています。 リストボックス内で、日付が“1/2/2004”と表示され, 金額には千円単位の“,”表示されません。 この日付を“2004/2/1”と表示させ、金額に“,”を表示させる方法はないでしょうか?

専門家に質問してみよう