感谢您在过去提出我的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")
突出显示。
关于如何使这项工作的任何想法?
答案 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