从Excel表名称创建数组

时间:2018-06-25 09:55:57

标签: arrays excel excel-vba vba

我想创建一个宏,该宏遍历工作表的所有表,并为每个表创建一个与表同名的数组,并使用表中的值填充该数组。 我从这里开始:

Dim tbl as ListObject
For Each tbl In Worksheets(Brand).ListObjects

但是我看不到如何继续以tbl.Name作为数组名称来创建数组?有可能吗?

2 个答案:

答案 0 :(得分:1)

使用字典

将表添加到字典时,可以使用表名命名数组。

Dim iDict As Object
Dim tbl As ListObject

Set iDict = CreateObject("Scripting.Dictionary")
For Each tbl In ThisWorkbook.Worksheets("Brand").ListObjects
    iDict.Add tbl.Name, tbl.DataBodyRange.Value
Next

此外,您可以将数组检索为

Dim vArr() : vArr = iDict(anytablename)

答案 1 :(得分:1)

您可以使用集合:

Dim coll As New Collection
Dim ws As Worksheet
Dim lo As ListObject

For Each ws In ThisWorkbook.Worksheets
    For Each lo In ws.ListObjects
        coll.Add lo.DataBodyRange.Value, lo.Name
    Next lo
Next ws