4

18 列を返す外部クエリをデータ ソースとして持つ ListObject があります。ListObject には、以前に追加の 4 つの計算列が追加されていました。

現在、ListObject のデータ行は 0 ですが、データ行は 0 ですが、計算列の定義済みの数式を読み取ることができないようです。

データ ソースを更新すると、データ ソースが少なくとも 1 行を返すと、計算列の数式が読み取れるようになります。同様に、計算されていない列の 1 つに手動でデータを入力して、少なくとも 1 つの行が存在するようにすると、計算された列の数式を読み取ることができます。

リスト オブジェクトにデータを追加せずに、計算された列の数式を特定する方法はありますか?

4

1 に答える 1

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
于 2016-11-22T05:50:41.110 に答える