• ベストアンサー

VBAのリストボックスで、横スクロールバーを表示するには?

お世話になります。 今、Excel_VBAで、あるデータをリスト表示にしているのですが、ながいデータになりますので水平スクロールバーをつけたいと思います。 標準のプロパティにはないので、"SendMessage"APIを使用し、コーティングをしているのですがうまくいきません。 [標準モジュール] Public Declare Function SendMessage Lib "user32" Alias "SendMessageA"(ByVal hwnd As Long, ByVal wMsg As Long,ByVal wParam As Long, lParam As Long) As Long [フォーム/ボタンクリックイベント] Private Sub Form_Load() List1.AddItem "あああああああああああ" List1.AddItem "いいいいいいいいいいい" List1.AddItem "ううううううううううう" lRtn = SendMessage(List1.hwnd,LB_SETHORIZONTALEXTENT, 240, 0)              End Sub 以上を実行すると、上記の"List1.hwnd"のhwndの部分で エラーになってしまいます。 エラー内容は、「メソッドまたはデータメンバがみつかりません」です。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

回答ではないのですが。 VBAのリストボックスはハンドルを持たないので、List1.hWndと書いてもエラーになります。 参考にされたコードはVB6.0のものと思います。 VB6のリストボックスならばハンドルが取れるので、使えるのです。 私もVBAで横スクロールバーを出したいなっと思ったのですがなかなか面倒・・・というかやりかたを見つけ出せず、私の場合リストボックスは使わずにリストビューを使うのが通常になっています。 もし可能ならば、その線もご検討なさってはいかがでしょうか? リストビューなら縦横自由にスクロールバーは出せるし、列の幅をユーザーが自由に動かせます。 スクロールするときにマウスホイールにも反応します。 回答でなくてすみません。

kyo----
質問者

お礼

PCの調子が悪く、返答が遅くなり大変申し訳御座いません!!何とか解決いたしました。有難う御座いました。

その他の回答 (1)

  • jmh
  • ベストアンサー率23% (71/304)
回答No.2

ハンドルは、  Dim c As Control  Set c = ListBox1  Debug.Print c.[_GethWnd] って、取り出せると思います。 でも、SendMessage(LB_SETHORIZONTALEXTENT) が効くのかな? 素朴に ColumnWidths を設定するのはどうかしら?

kyo----
質問者

お礼

PCの調子が悪く、返答が遅くなり大変申し訳御座いません!!何とか解決いたしました。有難う御座いました。