如何为for语句中的行选择列值?

时间:2012-05-01 15:28:19

标签: excel excel-vba excel-2010 vba

感谢您在过去提出我的n00bish问题,我还有另一个问题,我已经做了大量的研究,没有找到答案。

我正在尝试遍历表中的行并选择某个列的值,此时我想要将该值放在一个MsgBox中,但我的尝试一再失败。

Dim id As Range
Dim trtype As Range

set id = Activesheet.Range("Table1[Column1]")

For Each r In id
    r.Select
    Set trtype = .Range(Cells(.ActiveRow, "Column5"))
    MsgBox trtype.Value
Next r

这会返回行的“类型不匹配” trtype = .Range(Cells(.ActiveRow, "Column5")突出显示。

关于如何使这项工作的任何想法?

2 个答案:

答案 0 :(得分:1)

你错过了行中的SET这个词:

trtype = .Range(Cells(.ActiveRow, "Column5")) 

trtype是一个对象变量(即指向内置Excel对象的变量)。 VBA规则是您必须使用SET来分配它。

多年来,这是我最常见的VBA错误!

答案 1 :(得分:0)

我通过以下方式让它发挥作用:

For Each r In id
    r.Select
    trtype = Selection.Text
    MsgBox trtype
Next r

感谢让我在关于set的答案的正确轨道上,这让我讨论了何时使用set以及发现它仅用于对象并且必须使用.Text设置字符串不是.Value