首页 > 解决方案 > 有没有一种有效的方法将表头存储在 VBA 集合中?

问题描述

我正在尝试将我的每个表头值存储在Collection. 我正在使用的代码就是这样做的,但似乎我Collection正在复制项目。我相信这与我在Collection. 我面临着一个

运行时错误 13

尝试在循环中检索Collection项目时For Each

代码

Public Property Get TmProducts() As Collection
    Set TmProducts = this.TmProducts
    TmProducts.Add TmTable.ListObjects("Table1").HeaderRowRange.value
End Property

截屏

在此处输入图像描述

标签: excelvba

解决方案


这是因为您将标头值数组分配给集合中的第一项。因此,您需要按如下方式遍历数组中的每个项目...

Dim item As Variant
For Each item In TmProducts(1)
    Debug.Print item
Next item

但是,由于您可能希望将每个标题值分配给集合中的单独项目,因此您需要按如下方式分配它们...

Dim currentCell As Range
For Each currentCell In TmTable.ListObjects("Table1").HeaderRowRange
    TmProducts.Add currentCell.Value
Next currentCell

然后您可以按如下方式访问您收藏中的项目...

Dim item As Variant
For Each item In TmProducts
    Debug.Print item
Next item

推荐阅读