Board logo

標題: 如何達成兩個listbox的水平捲軸同步? [打印本頁]

作者: earl    時間: 2016-1-5 18:01     標題: 如何達成兩個listbox的水平捲軸同步?

請問各位大大若需要將兩個listbox的水平捲軸同步的話, 應該如何操作?
網路上找了好幾個方式都無法正常執行, 是否能協助幫下忙, 謝謝
希望是不管操作listbox1或是listbox2的水平捲軸都能夠同步於另一個listbox
PS. 公司是使用office 2007的, 也無法新增listview的功能, 所以請忽略listview的做法, 謝謝
[attach]23045[/attach]
作者: GBKEE    時間: 2016-1-7 07:19

回復 1# earl
試試看
  1. Dim AR(), Msg As Boolean
  2. Private Sub UserForm_Initialize()
  3.     AR = Array(ListBox1, ListBox2)  '所有ListBox
  4.     Set myitem = Range("A1:I4")     '這裡有修改
  5.     Set mydb = Range("A2:I4")
  6.     With AR(0) 'ListBox1
  7.         .ColumnCount = 9
  8.        .RowSource = myitem.Address
  9.     End With
  10.     With AR(1) 'ListBox2
  11.            .ColumnCount = 9
  12.            .RowSource = mydb.Address
  13.     End With
  14. End Sub
  15. Private Sub ListBox1_Click()
  16.     If Msg Then Exit Sub
  17.     Ex ListBox1.ListIndex
  18. End Sub
  19. Private Sub ListBox2_Click()
  20.     If Msg Then Exit Sub
  21.     Ex ListBox2.ListIndex
  22. End Sub
  23. Private Sub Ex(OB As Integer)
  24.     Dim E As Variant
  25.     Msg = True
  26.     For Each E In AR
  27.         E.ListIndex = OB ' 所有ListBox 水平捲軸都同步
  28.     Next
  29.     Msg = False
  30. End Sub
複製代碼

作者: stillfish00    時間: 2016-1-7 09:25

回復 2# GBKEE
我覺得他說的是 ListBox1下方捲軸往右滾動時
ListBox2下方捲軸也要向右同步滾動

這樣還有解嗎?
作者: 准提部林    時間: 2016-1-7 09:56

1.捲軸移動時,並不會觸動事件(不知其它版本是否有此事件),而選取(Click) 時,只能檢測其資料行列位置!
2.若想〔標題文字〕與〔資料〕左右同步顯示,設定其 ColumnHeads = True 即可,不須用到兩個ListBox
3.如果各欄文字字元數不多,以範例檔為例,只要設定其 ColumnWidths 屬性,也用不到水平捲軸!

參考如下方法:
Set mydb = Range("A2:I4") '注意:這參照位址不可包含〔標題列〕
With ListBox2
  .ColumnCount = 9
  .RowSource = mydb.Address
  .ColumnHeads = True
  .ColumnWidths = "42,42,42,42,42,42,42,42,42"
End With
作者: earl    時間: 2016-1-7 13:18

GBKEE 大大, 感謝您的解答, 但與我想要的需求不同
我是希望移動listbox1下方水平捲軸時, listbox2的水平捲軸也能夠同時移動, 如同stillfish00大描述

准提部林大大, 因為標題總共有兩列, 所以才不考慮用ColumnHeads, 而採用兩個listbox答到我的需球
作者: GBKEE    時間: 2016-1-7 15:39

回復 3# stillfish00
    哈,我眼花了亂解.VBA的功力有限ㄚ.
作者: earl    時間: 2016-1-8 10:32

GBKEE大大, 應該是小弟我描述的不好
不過還是感謝大大熱心的協助

後來小弟自己使用一組listbox使用ColumnHeads, 在把兩列資料表題合在一起顯示於此, 就不需要用兩個listbox並同步捲軸了
不然小弟我真的想不到同步怎用~哈




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)