我有一个带有外部查询的 ListObject 作为数据源,它返回 18 列。ListObject 之前添加了额外的 4 个计算列。
现在,ListObject 有 0 个数据行,但是,虽然有 0 个数据行,但我似乎无法读取计算列的预定义公式。
如果我刷新数据源,并且数据源至少返回 1 行,则计算列的公式变得可读。同样,如果我在其中一个未计算的列中手动输入数据,以便至少有一行,那么计算的列公式是可读的。
有没有办法在不向列表对象添加任何数据的情况下确定计算的列公式是什么?
我有一个带有外部查询的 ListObject 作为数据源,它返回 18 列。ListObject 之前添加了额外的 4 个计算列。
现在,ListObject 有 0 个数据行,但是,虽然有 0 个数据行,但我似乎无法读取计算列的预定义公式。
如果我刷新数据源,并且数据源至少返回 1 行,则计算列的公式变得可读。同样,如果我在其中一个未计算的列中手动输入数据,以便至少有一行,那么计算的列公式是可读的。
有没有办法在不向列表对象添加任何数据的情况下确定计算的列公式是什么?
这是一个解决方法,无论表是否有行都可以使用。
getListColumnFormulae
- 向表中添加一行 - 使用所有 ListColumns 的公式填充一维基数为 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