【问题标题】:Excel VBA - Storing table column into a range variableExcel VBA - 将表列存储到范围变量中
【发布时间】:2018-03-29 08:06:44
【问题描述】:

我目前正在试验 excel VBA ListObjects,它是 excel 表的对象类型。我想将表格列范围存储到变量中

这是我能做的:

'store a group of cells into a range variable
dim rng as Range
set rng = activesheet.Range("A1:A10")

'select a table column
dim table as ListObject
set table = activesheet.listobjects("Table1")
table.ListColumns(1).Range.Select

虽然上述两种方法都有效,但我不明白为什么以下方法无效:(编辑:有效

dim rng_column as Range
set rng_column = table.ListColumns(1).Range

我尝试了其他变量类型,例如variantListColumn,但是没有将单元格存储到变量中。在上面的例子中,没有错误,但是变量rng_column仍然是<empty> 我知道还有其他解决方法,但我真的很想了解这里有什么问题。


更新 在一些有用的 cmets 之后,我可以缩小问题的范围。一切正常。然而,我犯了两个错误。

首先,我在变量名中有拼写错误。 (我应该包括选项明确地注意到这一点)。

其次,我将范围变量传递给另一个范围变量,这样做时我忘记包含 set 关键字..

希望有人能从我的错误中吸取教训..

【问题讨论】:

  • 该代码对我有用。桌子肯定在你认为的位置吗? rng 似乎与此处无关?
  • 他们为我工作,你遇到了什么错误?
  • 在最后试试这一行,看看它会返回什么MsgBox rng_column(1)
  • 我没有收到错误,我尝试将rng_column 变量粘贴到以下WorksheetFunction.Match(search, rng_column, 0) 中。这里出现了一个错误,因为rng_column 是空的。在调试模式下,它在变量上方显示
  • 感谢@SJR,它有效。我猜这个错误一定在别的地方..

标签: vba excel range listobject


【解决方案1】:

标题用词不当。从技术上讲,您不能将任何数据存储到范围变量中。

范围变量是对一个单元格或一组单元格的引用(指针)。数据存储在范围变量指向的单元格中。

如果您需要存储范围中的数据,则将 range.value 分配给数组

如果您想存储单个单元格中的数据,则将值分配给“常规”(非对象)变量(字符串、整数、长 ...)

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2020-02-10
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多