我有一个带有外部查询的ListObject作为数据源,它返回18列。 ListObject之前已经添加了4个计算列。
现在,ListObject有0个数据行,但是有0个数据行,我似乎无法读取计算列的预定义公式。
如果我刷新数据源,并且数据源返回至少1行,则计算列的公式将变为可读。同样,如果我在其中一个非计算列中手动输入数据,以便至少有一行,则计算出的列公式是可读的。
有没有办法确定计算出的列公式是什么没有将任何数据添加到列表对象?
答案 0 :(得分:3)
这是一种解决方法,无论表是否有行都可以使用。
getListColumnFormulae
- 向表中添加一行
- 使用所有ListColumns的公式填充1维基数1数组
- 删除行
- 返回数组
Function getListColumnFormulae(tbl As ListObject)
Dim Formulae
On Error Resume Next
With tbl.ListRows.Add
Formulae = Application.Transpose(.Range.Formula)
Formulae = Application.Transpose(Formulae)
getListColumnFormulae = Formulae
.Delete
End With
On Error GoTo 0
End Function
Sub FormulaeMessage()
Dim Data
Dim tbl As ListObject
Set tbl = Worksheets("Sheet2").ListObjects(1)
Data = getListColumnFormulae(tbl)
End Sub