[算表] VBA Range物件讀取數值問題

作者: terrylove12 (空洞)   2018-05-15 20:43:58
軟體: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)的資料而已
請問該怎麼處理呢
謝謝
作者: newacc (XD)   2018-05-15 21:02:00
用aa.cells(1)Set bb = Range(aa.Cells(1), aa.Cells(2)) 試試
作者: terrylove12 (空洞)   2018-05-15 21:09:00
試了一下 結果依然是一樣的 囧
作者: newacc (XD)   2018-05-15 21:15:00
你用Range(rngA,rngB)就是代表一個左上角是rngA,右下角是rngB的長方形@@試試set bb = Union(aa(1), aa(2))然後剛剛測試,range(1)和range.Cells(1)好像其實相同...其運作元理就是以range最左上角的格子為基準做移動所以你就算bb是用union的方式,bb(2)還是只能叫到aa(1)下面那一格如果你希望bb(1)是叫aa(1),bb(2)是叫aa(5),建議用collection,如下試試Dim bb As New Collectionbb.Add aa(1)bb.Add aa(5)這樣你呼叫bb(2)就會是aa(5)
作者: terrylove12 (空洞)   2018-05-15 21:30:00
因為會Call到excel的forecast functionforecast 不知道know_x,know_y能不能吃collection
作者: newacc (XD)   2018-05-15 22:14:00
如果只是要座標的話 bb(1).Row 和 bb(1).Column呃,請忽略我上一樓的推文...= =單純用array不能滿足需求嗎?https://i.imgur.com/SxiPRjF.png如果你希望可以直接叫array,又可以當成range物件,大概只能自己寫物件模組了稍微簡單寫了一下,沒有認真debughttps://i.imgur.com/jXGbJjA.png
作者: terrylove12 (空洞)   2018-05-16 22:12:00
謝謝n大了 物件模組最近才剛開始碰 正在熟悉中 囧

Links booklink

Contact Us: admin [ a t ] ucptt.com