2

感谢您过去提出我的 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")这将返回“类型不匹配”,并突出显示该行 。

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

4

2 回答 2

1

您错过了该行中的 SET 一词:

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

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

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

于 2012-05-01T15:40:05.737 回答
0

我通过执行以下操作使其工作:

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

感谢您让我在正确的轨道上找到关于 set 的答案,这让我开始讨论何时使用 set 以及发现它仅适用于对象并且字符串必须设置为.TextNot.Value

于 2012-05-01T23:43:23.530 回答