For~Each文でのRange操作で、以下のマクロを高速化したいです。(現状、かなり遅い)
マクロの概要
- 条件付き書式でグレーアウトされているセルをロック
- 数式が入力されているセルをロック
vb
1 Dim rng As Range 2 With wsBSinput 3 eRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 4 .Range(.Cells(pcDataRow, 9), .Cells(eRow, 52)).Locked = False 5 6 For Each rng In .Range(.Cells(pcDataRow, 9), .Cells(eRow, 52)) 7 ' グレーアウトされているセルはロック 8 If rng.MergeArea.DisplayFormat.Interior.ColorIndex = 15 Then 9 rng.MergeArea.Locked = True 10 ' 自動計算セルはロック 11 ElseIf rng.MergeArea(1, 1).HasFormula = True Then 12 rng.MergeArea.Locked = True 13 End If 14 Next rng 15 End With
なお、このプロシージャを呼ぶ前に、以下のことはすでにしています。
- イベントの抑制
- 画面描画の停止
- 自動計算を手動
何かわかる方いたらご教授いただければ幸いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/19 13:30