2016-11-10 3 views
0

ブックには、ブック内の多くの数式で使用されるテーブルオブジェクトがあります。ブックの式を逆参照せずにVBAでテーブルオブジェクトを削除して再作成することはできますか?

テーブルオブジェクトは、VBAルーチンで作成されます。

問題は、テーブルがVBAルーチンで再作成された場合に、そのテーブルを参照するすべての式が壊れてしまうことです。これを避けることは可能ですか?テーブルはVBAルーチン

=SUMIFS(#REF!,#REF!,"ML") 

中に同じ名前の削除と再作成されたとき

=SUMIFS(output_dump[Value],output_dump[assetClass],"ML") 

例えば

が破壊されますシートに式をロックまたは予防する方法はあります彼らはVBAルーチンの間に更新することからですか?

+0

理論的には、あなたがにあなたのワークシートの数式のすべてをダンプすることができ配列を作成してからワークシートに貼り付けてください。神様は、それがいかに遅いか知っていますが、私は推測したくもありません... – CallumDA

+0

ええ、私は計算モードを 'xlCalculationManual'に変えようとしましたが、無駄になりました.. – OfficialBenWhite

+0

テーブルを更新できませんデータを再作成する代わりに?あなたは '.Clear'やそれに類するものを作ることができます(私はあなたの特定の事件を知らない) – RCaetano

答えて

0

ちょうど新しいデータ行が範囲を包含するように更新されますあなたのテーブルの行とそれのすべての参照を挿入

ます。Option Explicit

Sub main() 
    Dim tbl As ListObject 

    Set tbl = Worksheets("table").ListObjects("output_dump") '<--| change "table" to your actual worksheet name 

    With tbl.DataBodyRange.Rows(2) '<-- reference data 2nd row 
     .Insert '<-- insert a row -> you'll have a new empty row between data row 1 and 2 
     .Offset(-1).Cells(1, 1) = "ML" '<-- fill inserted row row index (.Offset(-1)) first column (.Cells(1, 1)) 
     .Offset(-1).Cells(1, 2) = 100 '<-- fill inserted row row index (.Offset(-1)) second column (.Cells(1, 2)) 
    End With 
End Sub 
+0

@OfficialBenWhiteに変換します。あなたはそれを通過しましたか? – user3598756

+0

@OfficialBenWhite、あなたを助けようとしている人々にフィードバックを与えてくれてうれしいです – user3598756

関連する問題