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集合中的表名标识; 例如tblAllData
或tblDayData
。