- ベストアンサー
ActiveXコントロールのコンボボックスの表示とスクロールについて
- ActiveXコントロールのコンボボックスの表示が制限される
- コンボボックスの中身が増えるとスクロールバーが表示されるが、マウスのホイールスクロールと連動しない
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 > 質問1:コンボボックス内の表示がAの部分の4文字までで切れてしまいます。 > これが表示の限界なのでしょうか? > 全て表示させることはできないのでしょうか? コンボボックスのリストに表示する列の数、 これが1列ならば、コンボボックスのプロパティで、 .ColumnCount を 1 に設定すればOKです。 2列とかならば、 .ColumnCount を 2 .ColumnWidth を 200;16 ( 200 pt;16 pt のように表示されます。) のように、各列に十分な幅を指定しておきます。 (無論コンボボックス全体の幅は適宜設定が必要です) > 質問2:コンボボックスの中身が多くなると、垂直スクロールバーが表示されますが、 > これがマウスのホイールスクロールと連動しません。 > 連動させることは出来ないのでしょうか? コンボボックスはマウスホイールの動作に関知しませんから、これは無理です。 ただし、 > コンボボックスの中身は、場合によって違い、最小3個、最大17個になります。 ということでしたら、 ドロップダウンリストの表示行(件)数は、凡そ30行(件)程度でも十分扱えますから、 現実的な対応として、予めコンボボックスのプロパティで、 .ListRows を 17 と最大行(件)数に合わせて設定しておけば(スクロールバー無用になり)いいと思います。 (リストが、より少ない行数になった場合でも、無駄な行は表示されませんし) 以上の対策をプロパティページで設定し直すことに自信がない場合は、 以下の記述を、コンボボックスを配置したシートの シートモジュールに貼り付けて、一度だけ実行してみて下さい。 (コンボボックスのオブジェクト名、各パラメータは運用に合わせて適宜指定) Sub TuneCombo() ' 1列の場合の例 With ComboBox1 .ColumnCount = 1 .ListRows = 17 End With End Sub Sub TuneCombo2() ' 1列の場合の例 With ComboBox1 .ColumnCount = 2 .ColumnWidths = "200;16" .ListRows = 17 End With End Sub 尚、 ・作成者が設定(変更)した各種プロパティ ・コンボボックスのリストの設定方法 の如何によって(何か特別なことをしている場合)は、 上述の対策では不十分な場合も考えられます。 その場合は、改めて全貌を開示して回答を待つか、 記録や記憶が残っていないなどの理由で開示が難しい場合には、 コンボボックスを最初から作成し直した方が早い場合もあるかも知れません。 また、 > 別なシートからコンボボックスの中身を取り出すような形にしました。 この一文が意味すること、と、今回解決するべき問題との関連、が、 私には解りませんでしたので、今回の回答には反映しておりません。 以上です。
お礼
ご回答ありがとうございます。 教えて頂いた.ColumnWidthをプロパティページで変更することで望んだ通りになりました! また質問2の方も、おっしゃる通り最大件数に合わせても、操作に支障がなさそうだったので、そのように致しました。 >> 別なシートからコンボボックスの中身を取り出すような形にしました。 この一文は、一応状況説明のために記載しただけですので、おっしゃる通り、今回の質問には関係ありませんでしたね。すみません。 何はともあれお世話になりました。 今後ともよろしくお願いいたします。