作者terrylove12 (空洞)
看板Office
標題[算表] VBA Range物件讀取數值問題
時間Tue May 15 20:43:58 2018
軟體: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://webptt.com/m.aspx?n=bbs/Office/M.1526388241.A.C01.html
1F:推 newacc: 用aa.cells(1) 05/15 21:02
2F:→ newacc: Set bb = Range(aa.Cells(1), aa.Cells(2)) 試試 05/15 21:02
3F:→ terrylove12: 試了一下 結果依然是一樣的 囧 05/15 21:09
4F:→ newacc: 你用Range(rngA,rngB)就是代表一個左上角是rngA,右下角是 05/15 21:15
5F:→ newacc: rngB的長方形@@ 05/15 21:16
6F:→ newacc: 試試set bb = Union(aa(1), aa(2)) 05/15 21:19
7F:→ newacc: 然後剛剛測試,range(1)和range.Cells(1)好像其實相同... 05/15 21:21
8F:→ newacc: 其運作元理就是以range最左上角的格子為基準做移動 05/15 21:22
9F:→ newacc: 所以你就算bb是用union的方式,bb(2)還是只能叫到aa(1)下 05/15 21:23
10F:→ newacc: 面那一格 05/15 21:24
11F:→ newacc: 如果你希望bb(1)是叫aa(1),bb(2)是叫aa(5),建議用 05/15 21:25
12F:→ newacc: collection,如下試試 05/15 21:26
13F:→ newacc: Dim bb As New Collection 05/15 21:26
14F:→ newacc: bb.Add aa(1) 05/15 21:26
15F:→ newacc: bb.Add aa(5) 05/15 21:26
16F:→ newacc: 這樣你呼叫bb(2)就會是aa(5) 05/15 21:26
17F:→ terrylove12: 因為會Call到excel的forecast function 05/15 21:30
18F:→ terrylove12: forecast 不知道know_x,know_y能不能吃collection 05/15 21:31
19F:→ newacc: 如果只是要座標的話 bb(1).Row 和 bb(1).Column 05/15 22:14
20F:→ newacc: 呃,請忽略我上一樓的推文...= = 05/15 22:16
21F:→ newacc: 單純用array不能滿足需求嗎? 05/15 22:23
23F:→ newacc: 如果你希望可以直接叫array,又可以當成range物件,大概只 05/15 22:27
24F:→ newacc: 能自己寫物件模組了 05/15 22:27
25F:→ newacc: 稍微簡單寫了一下,沒有認真debug 05/15 22:49
27F:→ terrylove12: 謝謝n大了 物件模組最近才剛開始碰 正在熟悉中 囧 05/16 22:12