用range.columns(n)定义范围后,无法遍历范围

时间:2016-11-30 16:18:42

标签: excel-vba vba excel

我已经碰到了几次,总是很讨厌。我可以解决这个问题,但我想弄清楚是否有理由或更容易解决。

我已经使用

定义了包含我所有数据的范围
<?xml version="1.0"?>
<package >
  <metadata>
  ...
  </metadata>
  <files>
    <file src="readme.txt" target="" />
    <file src="bin\Win32\Release\*.dll" target="lib\net461" />
    <file src="bin\Win32\Release\*.pdb" target="lib\net461" />
  </files>
</package>

现在我想查看该范围第一列中的每个单元格,并且我试图这样做:

Set rngAll = range("A8",cells(usedrange.rows.count,usedrange.columns.count))

当我运行代码时,Set rngUserIDs = rngAll.columns(1) For each rngCell in rngUserIDs Do Something next rngCell 不是在rngUserIDs中查看每个单独的单元格,而是将自身设置为与rngCell的整体相匹配。如果rngUserIDs = A8:A1000,而不是从A8开始并向下循环,rngUserIDs立即= A8:A1000,做它的东西,然后退出循环。

如果我以任何其他方式设置rngUserIDs,例如:

rngCell

它完美无缺,依次查看每个细胞。

这种行为有原因吗?我能做些什么吗?是的,我可以解决它,但由于各种结构原因,如果我可以使用set rngUserIDs = Range("A8","A" & range("A" & rows.count).end(xlup).row) For Each rngCell in rngUserIDs Do Something next rngCell 的第一列,将会很方便。

1 个答案:

答案 0 :(得分:1)

你必须指定Cells属性,原因我并不完全确定我认为最后一个选项是最好的,尽管你想尽可能地限制你的范围。

Set rngUserIDs = rngAll.columns(1)
For each rngCell in rngUserIDs.Cells
    Do Something
next rngCell