作者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/cn.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