現在、約を表示するExcel/VBAワークブックに取り組んでいます。予算内の 500 アイテム、それぞれ別の行。ユーザーに予算の詳細レベルを選択してもらいたい: 最高レベルでは個々のアイテムが表示され、詳細レベルではいくつかのアイテムが 1 つのヘッダーの下にグループ化されます。
以下に概説する方法 (行ごとに非表示/非表示にする) は非常に遅く、ほとんどのアイテムを非表示/非表示にするには約 4 分かかります。プログラムを高速化するためのヒントがあれば幸いです。
ダイアログ ボックスで詳細レベルを選択すると、プログラムは次の手順を実行します。
1) 更新画面がオフに設定されている:
Application.ScreenUpdating = False
Application.EnableEvents = False
2) 予算内の項目ごとに、その行を非表示にするかどうかが決定されます。これに使用しているコードは次のとおりです。
with sheets("[name sheet here]")
.Range("[identifier of budget line item here]").EntireRow.Hidden = False / True
...
[500 times]
...
end with
3) 第 2 に、詳細レベルに応じて、サブヘッダーに対応するテキストが白または黒になります。これは、約 20 行に対して行われます。
With Sheets("[name sheet here]").Range("[identifier of budget line item here]").Font
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
End With
4) 最後に、詳細レベルに応じて、一部の行を非表示にすると見えなくなる線が再び描画されます。これは、さまざまな範囲で 10 回ほど実行されます。
Range("[range here]").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With