看板 Office 關於我們 聯絡資訊
軟體:excal 版本:2016 不好意思 想請問版上的各位 假設我有兩個宣告為RANGE的物件 Dim aa As Range Dim bb As Range 然後aa透過選取的儲存格讀取資料 Set aa=Range(Selection(1, 1), Selection(11, 1)) 此時aa就會有11筆資料 用MsgBox 確認 aa(1)~aa(11)都OK 接著我想提取其中的兩個資料位置進bb Set bb=Range(aa(1),aa(2)) 但是用MsgBox確認bb 發現bb把所有的aa(1)後[包含]的所有資料都吃了進來 但這不是我想要的 我只需要裡面有aa(1)及aa(2)的資料而已 請問該怎麼處理呢 謝謝 -- Sent from my fx-82SX -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.154.22 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1526388241.A.C01.html
newacc: 用aa.cells(1) 05/15 21:02
newacc: Set bb = Range(aa.Cells(1), aa.Cells(2)) 試試 05/15 21:02
terrylove12: 試了一下 結果依然是一樣的 囧 05/15 21:09
newacc: 你用Range(rngA,rngB)就是代表一個左上角是rngA,右下角是 05/15 21:15
newacc: rngB的長方形@@ 05/15 21:16
newacc: 試試set bb = Union(aa(1), aa(2)) 05/15 21:19
newacc: 然後剛剛測試,range(1)和range.Cells(1)好像其實相同... 05/15 21:21
newacc: 其運作元理就是以range最左上角的格子為基準做移動 05/15 21:22
newacc: 所以你就算bb是用union的方式,bb(2)還是只能叫到aa(1)下 05/15 21:23
newacc: 面那一格 05/15 21:24
newacc: 如果你希望bb(1)是叫aa(1),bb(2)是叫aa(5),建議用 05/15 21:25
newacc: collection,如下試試 05/15 21:26
newacc: Dim bb As New Collection 05/15 21:26
newacc: bb.Add aa(1) 05/15 21:26
newacc: bb.Add aa(5) 05/15 21:26
newacc: 這樣你呼叫bb(2)就會是aa(5) 05/15 21:26
terrylove12: 因為會Call到excel的forecast function 05/15 21:30
terrylove12: forecast 不知道know_x,know_y能不能吃collection 05/15 21:31
newacc: 如果只是要座標的話 bb(1).Row 和 bb(1).Column 05/15 22:14
newacc: 呃,請忽略我上一樓的推文...= = 05/15 22:16
newacc: 單純用array不能滿足需求嗎? 05/15 22:23
newacc: https://i.imgur.com/SxiPRjF.png 05/15 22:25
newacc: 如果你希望可以直接叫array,又可以當成range物件,大概只 05/15 22:27
newacc: 能自己寫物件模組了 05/15 22:27
newacc: 稍微簡單寫了一下,沒有認真debug 05/15 22:49
newacc: https://i.imgur.com/jXGbJjA.png 05/15 22:50
terrylove12: 謝謝n大了 物件模組最近才剛開始碰 正在熟悉中 囧 05/16 22:12