
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
rowsとcolsの意味
-
4月~3月まで12カ月横に並んだ...
-
条件より変更するようにしたい ...
-
VBAのFind関数で結合セルを検索...
-
Cellsのかっこの中はどっちが行...
-
グリッドの列の最大値を求めたい。
-
VBAの初心者なのですが、「並び...
-
VBA 値と一致した行の一部の列...
-
【VBA】2つのシートの値を比較...
-
Excel UserForm の表示位置
-
エクセルでシートを保護すると...
-
罫線の斜線を自動で引くマクロ
-
あああ..ああい..ああう とい...
-
「段」と「行」の違いがよくわ...
-
Excel VBAでのWorksheet_Change...
-
EXCELのダイアログシートって、...
-
DataGridViewでグリッド内に線...
-
Excelのフィルター後の一番上の...
-
vba マージエリアの行数を非表...
-
【エクセル】フリーワード検索...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA sum ワークシートChange
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
URLのリンク切れをマクロを使っ...
-
【VBA】2つのシートの値を比較...
-
rowsとcolsの意味
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
B列の最終行までA列をオート...
-
VBAでのリスト不一致抽出について
-
複数の列の値を結合して別の列...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
エクセル 2つの表の並べ替え
-
DataGridViewに空白がある場合...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
【VBA】複数行あるカンマ区切り...
-
ExcelVBAでテキストルーレット...
おすすめ情報