コンボボックスのドロップダウンリストは通常、8アイテムしか表示されません。場合によっては不便だったりします。
これを Windows API を使用して変更します。
宣言部は以下のとおりです。モジュールレベルに配置してください。
Private Const CB_GETITEMHEIGHT = &H154 ' ウインドウの位置・サイズを変更する関数の宣言 Private Declare Function MoveWindow Lib "user32" (ByVal hWnd As Long, _ ByVal X As Long, ByVal Y As Long, _ ByVal nWidth As Long, ByVal nHeight As Long, _ ByVal bRepaint As Long) As Long 'ウィンドウへメッセージを送る Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Long) As Long
以下のように使用します。ドロップダウンリストのアイテム数を20にしてみました。
Dim CBHeight As Long Dim Result As Long Dim lDefault As LonglDefault = Combo1.Parent.ScaleMode ' 現在のスケールモードを保存 Combo1.Parent.ScaleMode = vbPixels ' スケールモードをピクセルに With Combo1 ' 項目の高さを取得 CBHeight = SendMessage(.hWnd, CB_GETITEMHEIGHT, 0&, ByVal 0&) ' 20項目表示する場合の高さを求める CBHeight = .Height + CBHeight * 20 + 2 ' コンボボックスの高さを変更 Result = MoveWindow(.hWnd, .Left, .Top, .Width, CBHeight, 1&) ' リストを作成 For Result = 1 To 20 .AddItem CStr(Result) Next End With Combo1.Parent.ScaleMode = lDefault ' スケールモードを元に戻す
結果は次のようになります。