- ベストアンサー
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の部分で エラーになってしまいます。 エラー内容は、「メソッドまたはデータメンバがみつかりません」です。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
回答ではないのですが。 VBAのリストボックスはハンドルを持たないので、List1.hWndと書いてもエラーになります。 参考にされたコードはVB6.0のものと思います。 VB6のリストボックスならばハンドルが取れるので、使えるのです。 私もVBAで横スクロールバーを出したいなっと思ったのですがなかなか面倒・・・というかやりかたを見つけ出せず、私の場合リストボックスは使わずにリストビューを使うのが通常になっています。 もし可能ならば、その線もご検討なさってはいかがでしょうか? リストビューなら縦横自由にスクロールバーは出せるし、列の幅をユーザーが自由に動かせます。 スクロールするときにマウスホイールにも反応します。 回答でなくてすみません。
その他の回答 (1)
- jmh
- ベストアンサー率23% (71/304)
ハンドルは、 Dim c As Control Set c = ListBox1 Debug.Print c.[_GethWnd] って、取り出せると思います。 でも、SendMessage(LB_SETHORIZONTALEXTENT) が効くのかな? 素朴に ColumnWidths を設定するのはどうかしら?
お礼
PCの調子が悪く、返答が遅くなり大変申し訳御座いません!!何とか解決いたしました。有難う御座いました。
お礼
PCの調子が悪く、返答が遅くなり大変申し訳御座いません!!何とか解決いたしました。有難う御座いました。