VBA编码:.ListObjects究竟做了什么?

我正试图改变一些数据excel模板的后处理代码。

前面的代码是使用数组,我会承认我是新来的,我试图找出什么

.ListObjects 

呢?

这是我目前生气的代码…

 Sub DefineLists() Dim sheetArr(1 to 5) as Worksheet Dim tblArr(1 to 5) as ListObject 'set array of sheet names Set sheetArr(1) = Sheets("All Data") Set sheetArr(2) = Sheets("Day") Set sheetArr(3) = Sheets("Evening") Set sheetArr(4) = Sheets("Night") Set sheetArr(5) = Sheets("Weekend") 'set array of table names Set tblArr(1) = sheetArr(1).ListObjects("tblAllData") Set tblArr(2) = sheetArr(2).ListObjects("tblDayData") Set tblArr(3) = sheetArr(3).ListObjects("tblEveData") Set tblArr(4) = sheetArr(4).ListObjects("tblNightData") Set tblArr(5) = sheetArr(5).ListObjects("tblWeekendData") End Sub 

我只是拼命想弄清楚第二套“集合”陈述正在做什么!

这些表格还有一些相当复杂的公式(= blahblahblah)写在单元格中,那么.ListObjects创build一个数组,它将存储所有这些公式?

ListObjects:ListObjects的集合

ListObject:工作表上的一个表

你的代码片

sheetArr(1):表(“所有数据”)

.ListObjects(“tblAllData”):引用名为tblAllData的ListObject

sheetArr(1).ListObjects(“tblAllData”):引用名为“tblAllData:在工作表名称上的所有数据”

ListObjects是一个表单上的ListObjects的集合(文档在这里)基本上,这个Set调用的Set是将Table数组的索引位置分配给表单中这些名称引用的特定ListObject 。 (仅供参考,该数组不是表名称列表,而是实际的Table ListObject本身的列表)

你正在用Dim tblArr(1 to 5) as ListObject声明一个单独的ListObject对象Dim tblArr(1 to 5) as ListObject (注意Dim tblArr(1 to 5) as ListObject格forms)。

稍后,您将数组的每个元素都设置为ListObjects集合中的特定ListObject(注意复数forms)。 这是由以前设置的sheetArr元素标识的工作表上的所有ListObjects。 单个对象由ListObjects集合中的表名标识; 例如tblAllDatatblDayData