[算表] 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