標題:
[發問]
Listbox欄位顯示的問題
[打印本頁]
作者:
lifedidi
時間:
2013-12-12 08:29
標題:
Listbox欄位顯示的問題
請問大大 小弟在sheet5有30幾個欄位從D欄位~AN欄位 要顯示在listbox上
但是出現了問題:
[attach]17048[/attach]
第十欄位以後就引述無效,
編碼如下,謝謝。
Dim i As Integer
With Listbox1
.ColumnCount = 37
.ColumnWidths = "20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt"
End With
With Sheet5
i = 1
Do While .Cells(i, "A") <> ""
With Listbox1
.AddItem
r = .ListCount
.List(r - 1, 0) = Sheet5.Cells(i, "D")
.List(r - 1, 1) = Sheet5.Cells(i, "E")
.List(r - 1, 2) = Sheet5.Cells(i, "F")
.List(r - 1, 3) = Sheet5.Cells(i, "G")
.List(r - 1, 4) = Sheet5.Cells(i, "H")
.List(r - 1, 5) = Sheet5.Cells(i, "I")
.List(r - 1, 6) = Sheet5.Cells(i, "J")
.List(r - 1, 7) = Sheet5.Cells(i, "K")
.List(r - 1, 8) = Sheet5.Cells(i, "L")
.List(r - 1, 9) = Sheet5.Cells(i, "M")
.List(r - 1, 10) = Sheet5.Cells(i, "N")
.List(r - 1, 11) = Sheet5.Cells(i, "O")
.List(r - 1, 12) = Sheet5.Cells(i, "P")
.List(r - 1, 13) = Sheet5.Cells(i, "Q")
.List(r - 1, 14) = Sheet5.Cells(i, "R")
.List(r - 1, 15) = Sheet5.Cells(i, "S")
.List(r - 1, 16) = Sheet5.Cells(i, "T")
.List(r - 1, 17) = Sheet5.Cells(i, "U")
.List(r - 1, 18) = Sheet5.Cells(i, "V")
.List(r - 1, 19) = Sheet5.Cells(i, "W")
.List(r - 1, 20) = Sheet5.Cells(i, "X")
.List(r - 1, 21) = Sheet5.Cells(i, "Y")
.List(r - 1, 22) = Sheet5.Cells(i, "Z")
.List(r - 1, 23) = Sheet5.Cells(i, "AA")
.List(r - 1, 24) = Sheet5.Cells(i, "AB")
.List(r - 1, 25) = Sheet5.Cells(i, "AC")
.List(r - 1, 26) = Sheet5.Cells(i, "AD")
.List(r - 1, 27) = Sheet5.Cells(i, "AE")
.List(r - 1, 28) = Sheet5.Cells(i, "AF")
.List(r - 1, 29) = Sheet5.Cells(i, "AG")
.List(r - 1, 30) = Sheet5.Cells(i, "AH")
.List(r - 1, 31) = Sheet5.Cells(i, "AI")
.List(r - 1, 32) = Sheet5.Cells(i, "AJ")
.List(r - 1, 33) = Sheet5.Cells(i, "AK")
.List(r - 1, 34) = Sheet5.Cells(i, "AL")
.List(r - 1, 35) = Sheet5.Cells(i, "AM")
.List(r - 1, 36) = Sheet5.Cells(i, "AN")
End With
i = i + 1
Loop
End With
複製代碼
作者:
stillfish00
時間:
2013-12-12 09:49
回復
1#
lifedidi
見ColumnCount 說明
若將 ColumnCount 設成 0,顯示的行數便是 0;若設成 -1,便顯示所有的資料行。
對一個非資料連結的資料來源而言,最多只能有 10 行 (0 到 9)。
您可用 ColumnWidths 屬性來設定控制項中的資料行寬。
作者:
lifedidi
時間:
2013-12-12 09:59
回復
2#
stillfish00
原來如此!了解了!謝謝大大!
作者:
stillfish00
時間:
2013-12-12 10:21
回復
3#
lifedidi
要破10欄限制,1是從 .RowSource 引用工作表範圍
2是用二維陣列一次給到 .List ,如下
Private Sub UserForm_Initialize()
Dim ar
With ListBox1
.ColumnCount = 37
.ColumnWidths = "20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt"
End With
With Sheet5
ar = .Range(.[a1], .[a1].End(xlDown)).Resize(, 37).Value
End With
ListBox1.List = ar
End Sub
複製代碼
作者:
lifedidi
時間:
2013-12-12 14:04
回復
4#
stillfish00
謝謝大大的方法,
小弟加了一些變數(因為欄位數會一直增加 從第二欄開始抓到最後一欄),但是怎麼改都抓不到值,
請教大大,謝謝。
With Sheet5
i = 2
Do While .Cells(i, "A") <> ""
j = ".[A" & i & "]"
With Sheet5
ar = .Range(j, j.End(xlDown)).Resize(, 37).Value
End With
Listbox1.List = ar
i = i + 1
Loop
End With
複製代碼
作者:
stillfish00
時間:
2013-12-12 14:44
直接用不行嗎?
Private Sub UserForm_Initialize()
Dim ar
With Sheet5
ar = .Range(.[a2], .[a2].End(xlDown)).Resize(, 37).Value
End With
With ListBox1
.ColumnCount = 37
.ColumnWidths = "20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt;20 pt"
.List = ar
End With
End Sub
複製代碼
回復
5#
lifedidi
作者:
lifedidi
時間:
2013-12-12 15:28
回復
6#
stillfish00
不好意思 我原始的DATA是COPY同一個欄資料 導致執行後結果都長一樣....
大大,謝謝你~已經解決了!!
作者:
lifedidi
時間:
2013-12-17 09:54
本帖最後由 lifedidi 於 2013-12-17 09:56 編輯
回復
6#
stillfish00
大大,請教您:
小弟現在用Listbox1的資料點選後 可以將資料庫的資料代到Textbox上
我的Listbox1清單的清單假如有兩筆資料
製造部 陳曉明 工程師 男 6年
生產部 莊宜慧 專員 女 7年
點第一行 Listbox1.value 的值為 製造部
點第二行 Listbox1.value 的值為 生產部
我要抓取"陳曉明" 則 點第一行 Listbox1.value = 資料庫的值 即可抓到開頭
但是下面的情形,則要抓第二欄位的資料才能正確抓到,請問該怎麼抓呢?
製造部 王天才 工程師 男 3年
製造部 陳曉明 工程師 男 6年
生產部 莊宜慧 專員 女 7年
謝謝!
作者:
stillfish00
時間:
2013-12-17 11:14
回復
8#
lifedidi
我要抓取"陳曉明" 則 點第一行 Listbox1.value = 資料庫的值 即可抓到開頭
看不懂,附上檔案程式看看
作者:
lifedidi
時間:
2013-12-17 11:38
回復
9#
stillfish00
[attach]17068[/attach]
檔案中我要查詢每個人的資料,
但是我這樣的方法只要遇到同部門就會卡在第一位,請大大指教,謝謝。
作者:
stillfish00
時間:
2013-12-17 13:24
回復
10#
lifedidi
名字會重複嗎? 不會就改用名字判斷
If Sheet1.Cells(i, 2) = ListBox1.List(ListBox1.ListIndex, 1) Then
作者:
lifedidi
時間:
2013-12-17 15:30
回復
11#
stillfish00
Dear 大大
名子會有重複的時候 (但是部門 +名子 就不會重複) 我加了一段
If Sheet1.Cells(i, 1) = ListBox1.List(ListBox1.ListIndex, 0) And Sheet1.Cells(i, 2) = ListBox1.List(ListBox1.ListIndex, 1) Then
就可以了(應該...)XD
謝謝大大的幫忙!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)