標題:
如何達成兩個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
試試看
Dim AR(), Msg As Boolean
Private Sub UserForm_Initialize()
AR = Array(ListBox1, ListBox2) '所有ListBox
Set myitem = Range("A1:I4") '這裡有修改
Set mydb = Range("A2:I4")
With AR(0) 'ListBox1
.ColumnCount = 9
.RowSource = myitem.Address
End With
With AR(1) 'ListBox2
.ColumnCount = 9
.RowSource = mydb.Address
End With
End Sub
Private Sub ListBox1_Click()
If Msg Then Exit Sub
Ex ListBox1.ListIndex
End Sub
Private Sub ListBox2_Click()
If Msg Then Exit Sub
Ex ListBox2.ListIndex
End Sub
Private Sub Ex(OB As Integer)
Dim E As Variant
Msg = True
For Each E In AR
E.ListIndex = OB ' 所有ListBox 水平捲軸都同步
Next
Msg = False
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/)