返回列表 上一主題 發帖

[發問] listbox rowsource用法

本帖最後由 n7822123 於 2021-7-17 15:11 編輯

回復 1# wang077


RowSource 不能使用離散範圍,只能是連續範圍,通常是寫SQL語法直接連結到某資料庫

要使用  RowSource 只能把你原本的表 經過整理(排除空白),輸出到另一個表,使其變成連續範圍才能引用

上面這一步寫起來反而"繁瑣",所以我通常不會這樣做,我習慣用 "List" 屬性 賦予陣列值

直接改寫你原本程式如下,請試看看~


For Each Rg In [Sheet1!D2:D100,Sheet1!F2:F100].SpecialCells(2)
  xList = xList & " " & Rg
Next
ListBox1.List = Split(Mid(xList, 2))
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 1# wang077


順便糾正你範圍的寫法,以下範圍會含"E欄"

Set Rng = Worksheets("Sheet1").Range("D2:D100", "F2:F100")

如果你"不要E欄",要這樣寫,仔細看,不一樣的喔

Set Rng = Worksheets("Sheet1").Range("D2:D100, F2:F100")
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2021-7-18 14:47 編輯

回復 10# wang077


只是一個雛型罷了,你沒給原始資料,沒人知道你是怎麼空白,怎麼合併儲存格的

你的問題在於,要先做資料整理,才能塞入 Listbox

重點在於資料整理,而不是怎麼塞入 ListBox

程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2021-7-18 15:26 編輯

回復 10# wang077


盲寫給你,請測試,如果程式出錯,請給個原始資料吧!

不知道你的原始資料,還要寫VBA給你

那已經不是VBA技術問題了,是在考驗猜測能力!



Dim Arr, Brr(), R%, K%
'原始資料入陣列Arr
With Sheets("sheet1")
  Arr = Range(.[D2], .Cells(Rows.Count, "F").End(3))
End With
'整理資料,Arr=>Brr
For R = 1 To UBound(Arr)
  If Arr(R, 1) <> "" And Arr(R, 3) <> "" Then  '排除D、F列空白
    K = K + 1: ReDim Preserve Brr(1 To 2, 1 To K)
    Brr(1, K) = Arr(R, 1): Brr(2, K) = Arr(R, 3)
  End If
Next R
Brr = Application.Transpose(Brr)
'塞入資料 Brr => ListBox
With ListBox1
  .List = Brr
  .ColumnCount = UBound(Brr, 2)
End With
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2021-7-18 22:33 編輯

回復 15# wang077


這樣嗎?



test+.rar (38.18 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2021-7-18 23:03 編輯

回復 17# n7822123


上一個發的檔案有Bug,用這個吧

基本上你的篩選,對資料整理沒什麼幫助~~

下次記得早點放上檔案,就不用花這麼多時間釐清了




test+2.rar (39.79 KB)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

        靜思自在 : 天上最美是星星,人生最美是溫情。
返回列表 上一主題