Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1357|回复: 6

学习中产生了一点疑惑。请教老师帮看看。

[复制链接]
发表于 2020-3-26 12:43 | 显示全部楼层 |阅读模式
请教一下,我今天做作业的时候。这样写了:
Sub 测试()
    Dim area As Range, rg As Range
    Set area = Range("a1").CurrentRegion.Columns(2)
        For Each rg In area
            Debug.Print rg.Address
        Next
End Sub
我觉得area得到的是b1:b37这样一个区域。但是我用for each rg in area循环。rg返回的是一个区域。不是单个的单元格,是不能这样用么

1.jpg
2.jpg
发表于 2020-3-26 14:23 | 显示全部楼层
我测试了,还真是你说的情况,你都研究这么深入了;
我猜测(仅仅是猜测),因为你选择了range(a1).currentregion.column(2),意味着把第二列当成了一个整体来看待。我测试的属性值:
area.columns.count=1
但area.rows.count还是实际的数据行数,并没有变成1。不过 for each 循环只会循环一次,从这点看,我就猜测系统是把整个第2列当成了一个整体;

作为变通,可以利用area.rows.count来分别读取,比如:
        hs=1
        For i = 1 To area.Rows.Count
            Cells(hs, 9) = Cells(area.Row + i - 1, 2)     '把第2列数据写入 H 列
            hs = hs + 1
        Next


评分

参与人数 1学分 +2 收起 理由
魚。。 + 2 学习

查看全部评分

回复

使用道具 举报

发表于 2020-3-26 14:27 | 显示全部楼层
回复

使用道具 举报

发表于 2020-3-26 15:32 | 显示全部楼层
QQ截图20200326143838.jpg



开始我也犯错了,后来我是这么想的:从图可知for each语句 只会针对两种情况: 数组、集合。
1楼问题是针对集合的。本题中集合是谁,集合里的元素又是谁呢?
测试时,每次只启用4句里的某1句。
从测试结果看,前2句时元素是单元格,后2句时元素是列。




Sub 测试1()
    Dim area As Range, rg As Range

'    Set area = Range("b1:b37")                       '集合是b1:b37,(默认)元素是集合里的每一个单元格,b1,b2,b3...,b37
'    Set area = Range("a1").CurrentRegion             '集合是a1:d37,(默认)元素是集合里的每一个单元格,a1,a2,a3...,d37
'    Set area = Range("a1").CurrentRegion.Columns     '集合是a1:d37的所有列,元素是集合里的每一列,a1:a37,b1:b37,c1:c37,d1:d37
'    Set area = Range("a1").CurrentRegion.Columns(2)  '集合是a1:d37的所有列中的第2列,元素是集合里的每一列,b1:b37

    'Debug.Print area.Address
    For Each rg In area
        Debug.Print rg.Address
    Next
End Sub





评分

参与人数 2学分 +4 收起 理由
0126 + 2 学习
魚。。 + 2 学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-3-26 15:34 | 显示全部楼层
hfwufanhf2006 发表于 2020-3-26 14:23
我测试了,还真是你说的情况,你都研究这么深入了;
我猜测(仅仅是猜测),因为你选择了range(a1).curren ...

感谢老师帮忙研究。又明白了一些机理和方法。十分感谢。
回复

使用道具 举报

 楼主| 发表于 2020-3-26 15:35 | 显示全部楼层

感谢老师,亲测好用。
回复

使用道具 举报

 楼主| 发表于 2020-3-26 15:38 | 显示全部楼层
爱疯 发表于 2020-3-26 15:32
开始我也犯错了,后来我是这么想的:从图可知for each语句 只会针对两种情况: 数组、集合。
1楼 ...

太感谢了。谢谢爱版主。分析的好清楚。明白了。以后就记住了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 15:02 , Processed in 0.701675 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表