アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

VBAユーザフォームのコンボボックスのリストにソースから追加しています。
ColumnCountを2に設定しているので、コンボボックスから選択するときにはちゃんと2列表示されるのですが、選択したあとにコンボボックスの表示に残るのは1列目だけなのです。
どのプロパティを変更したらいいのか見つかりません。
ご存知の方がいらっしゃいましたら、教えてください。
よろしくお願い致します。

A 回答 (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
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

TextColumnの値で設定することがわかっただけでも質問してよかったです。
このごまかし技をちょっと変えてやってみます。
ありがとうございました。

お礼日時:2003/01/14 10:01

下記リンクが非常に役立ちます


ワタシも度々VBAの相談をします

参考URL:http://www.fuji.ne.jp/~excelyou/
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ここのQ&A検索で探してみたいと思います。

お礼日時:2003/01/14 09:56

>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列)に文字列として、結合して持ってくれば済むことですね。セルにセットしたあと分離することを考えるとかでは、どうですか。
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ありません。
回答、ありがとうございます。

ワークシートにフォームを貼り付けたりしていません。
ボタンクリックで画面表示されるようにしています。

エクセルのセル範囲からデータを拾っているわけではありません。
これはどうやら関係ないようですね。
おっしゃるようにTextColumnの値のようです。
確かにVBA開発者の念頭にないような気がします。
それがわかっただけでも助かりました。
ありがとうございました。

お礼日時:2003/01/14 09:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!