No.3ベストアンサー
- 回答日時:
コンボボックスのリストを選択時、表示されるのはTextColumnに左右されます。
従って、表示されるのは、TextColumnに設定した1列目か2列目のどちらかになります。
しかし、2列程度なら選択時に2列分表示するのは不可能ではありません。(ごまかし技です)
下に書いたコードの要件は、ComboBox1のプロパティを
Width = 120
ColumnCount = 2
ColumnWidths = 49.95pt;49.95pt (実際は50;50をセット)
Font = MS明朝
TextColumn = 1
ControlSource は設定なし
です。
下のコードでは、Sheet1のA1:B10をComboBox1のリストに取り込んでいます。その時、
1列目を A列 & スペース & B列
2列目は B列
として、ColumnWidths を調節して1列目を狭くしています。(1列目は全部表示されていません)
選択したら、A列 & スペース & B列 が表示される理屈です。
どのリストを選択したか知るには、ComboBox1.ListIndex を調べれば分かります。
ご参考に。
Private Sub UserForm_Initialize()
Dim rw As Integer '行カウンタ
Dim myArray(9, 1) As Variant 'コンボボックスのリスト
With Worksheets("Sheet1")
For rw = 1 To 10
myArray(rw - 1, 0) = Left(.Cells(rw, 1) & String(12, " "), 12) & .Cells(rw, 2)
myArray(rw - 1, 1) = .Cells(rw, 2)
Next
End With
ComboBox1.List = myArray
End Sub
回答ありがとうございます。
TextColumnの値で設定することがわかっただけでも質問してよかったです。
このごまかし技をちょっと変えてやってみます。
ありがとうございました。
No.2
- 回答日時:
No.1
- 回答日時:
>VBAユーザフォーム
まずエクセルVBAの話題ですね。
ユーザーフォームとは。
直接ワークシート上に貼りつけていないのですか。
ワークシート上にフォームを貼りつけるやり方を説明して
下さい。
>ソースから追加
エクセルのワークシートの範囲(Range)から表示
しているということですね。ListFillRangeをA1:B3
とかにしているって言うことではないのですか。
>ColumnCountを2に設定しているので、コンボボックスから選択するときにはちゃんと2列表示されるのですが
プロパティのColumnCountを1から2に変えると、そして
コンボボックスの巾を十分取ると、2列(ListFillRangeの例えばA列とB列)表示になりますね。
>選択したあとにコンボボックスの表示に残るのは1列目だけなのです。
TextColumnが通常は1になっているが、2にすると上の例
でいうと選択した行のB列が表示されるます。
両方残る(表示する)は、このコントロール作成者の念頭にないのでは。
変えるとプロパティのText行の値が変る。
>その他
BoundColumnも通常1になっているが2にすると2列目が
LinkedCellで指定したセルにセットされる。
プロパティのValue行の値が変る。
当方Excell2000.
以上はエクセルの操作だけからやれることですが、VBA
コードなら
(A)Textに両方表示、
(B)セルも(通常隣接)2箇所表示をする(本件は
質問に入っていないが)
方法があるかもしれないので調べます。
(B)Column(x)とか指定して別の2ステップでセット出来るかも。
●ふと思いついたが、2列(上例ではA列とB列)に分けている情報を1列(上の例ではA列)に文字列として、結合して持ってくれば済むことですね。セルにセットしたあと分離することを考えるとかでは、どうですか。
お返事が遅くなり申し訳ありません。
回答、ありがとうございます。
ワークシートにフォームを貼り付けたりしていません。
ボタンクリックで画面表示されるようにしています。
エクセルのセル範囲からデータを拾っているわけではありません。
これはどうやら関係ないようですね。
おっしゃるようにTextColumnの値のようです。
確かにVBA開発者の念頭にないような気がします。
それがわかっただけでも助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA ComboBoxについて 2 2022/10/21 12:15
- HTML・CSS VB.net コンボボックス 2 2022/06/30 20:37
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) EXCEL VBA データベースの内容をユーザーフォームに表示したい。 5 2023/02/14 11:40
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
VBAを使って検索したセルをコピ...
-
vba 2つの条件が一致したら...
-
【VBA】2つのシートの値を比較...
-
エクセルVBA シートモジュール...
-
VBAのFind関数で結合セルを検索...
-
B列の最終行までA列をオート...
-
VBAで、特定の文字より後を削除...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
VBA 値と一致した行の一部の列...
-
vbaでシートより100より大きい...
-
VBAで10行おきにセルの下に罫線...
-
VBA UserFormからの転記で
-
Changeイベントでの複数セルの...
-
セルに値が入っていた時の処理
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
C# dataGridViewの値だけクリア
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
VBAのコードを教えてください
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
エクセルvbaについて
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
VBA UserFormからの転記で
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
VBマクロ 色の付いたセルを...
-
VBAで指定範囲内の空白セルを左...
おすすめ情報