3

互いにコピーされた同一のワークシートで構成されたテンプレート ワークブックがあります。各ワークシートで使用する VBA プロジェクトには約 10 個の関数があります。次に、テンプレートをマクロ有効ブックとして保存し、入力しました。これを 2 回行ったので、そのテンプレートから直接作成された workbookA.xlsm と workbookB.xlsm という 2 つのブックが作成されました。各ワークシートには多数のグループ化された列があります。つまり、画面の左側の上部にある + または - 記号のトグルで非表示にできる列です。計算モードを手動に設定しています。エクセル2007を使用しています。

私の関数の 1 つは SUM_TOTAL (以下に示す) と呼ばれ、2 つの範囲と文字列を取り、文字列が最初の範囲にある場合は 2 番目の範囲の項目を合計します。

計算プロセスで問題が発生しています。自動計算を使用している場合、または「今すぐ計算」を押した場合、アクティブなシートは問題なく計算されますが、他の同一のシートの多くはそのアクティブなシートと同じ値を与えます。関数 SUM_TOTAL が与えられます。一部の機能と一部の機能は、すべてのセルが毎回計算されるわけではないという事実に関係していると思います。シートが完全に独立しているわけではないことを示唆していますが、それらがリンクされている方法はわかりません。

ワークシートを循環して「シートの計算」を実行するマクロを作成しましたが、これが「今すぐ計算」の機能だと思いましたか? 他の人がモデルを使用することになるので、それを理解したいです。また、それが堅牢であることを知る必要があります。

できるだけ早く、どんな助けでも大歓迎です!

どうもありがとう、S

Public Function SUM_TOTAL(amount_type As String, amount_type_column As Range, 
range_to_sum As  Range) As Single

Dim cell As Range

SUM_TOTAL = 0

    For Each cell In amount_type_column

        If cell.Value = amount_type Then

            SUM_TOTAL = SUM_TOTAL + Cells(cell.Row, range_to_sum.Column).Value

        End If

    Next cell

End Function
4

1 に答える 1

0

入力引数 (mount_type、amount_type_column、range_to_sum ) が変わらなくても、UDF 関数を毎回更新する場合。

  1. Ctrl +Alt + f9 を押して、すべての関数を完全に再計算するか、vba Application.CalculateFull またはさらに強力な Crtl + Shift + Alt + F9/Application.CalculateFullRebuild

  2. (注意して使用してください。これにより、ワークシートに変更があるたびに関数が再計算されます) 行のいずれかに関数を追加Application.Volatileして、関数を揮発性にする必要がありますSUM_TOTAL

于 2012-12-13T03:31:47.260 に答える