簡體   English   中英

在VBA中應用單獨的條件格式—非常慢

[英]Applying Individual Conditional Formatting in VBA — VERY SLOW

由於數據欄的限制(即它們不能使用相對引用的最小值和最大值,我要添加一個個體),因此我要向810行中的每個單元格(選擇13列寬)添加一個個體條件格式規則。

不幸的是,在i5 4670k上,此操作大約需要35分鍾。 我正在運行的宏中發生了許多其他操作,但是我將速度問題隔離到條件格式的應用程序中。

有人對加速代碼有任何建議嗎? 這是該程序的精簡版本。

for RowCounter = FirstRow to Lastrow

for i = 0 to 12

' Add Databars
Range(FirstColumn & RowCounter).Offset(0, 2 * i).FormatConditions.AddDatabar
With Range(FirstColumn & RowCounter).Offset(0, 2 * i).FormatConditions(1)
    .MinPoint.Modify xlConditionValueNumber, 0
    .MaxPoint.Modify newtype:=xlConditionValueNumber, newvalue:= _
        Range(FirstColumn & RowCounter).Offset(0, 2 * i + 1).Value
End With

Next i

Next RowCounter

編輯2:根據要求,這是屏幕截圖 這就是我想要的

本質上,有兩種類型的列。 需要格式化的列(綠色)和將基於其格式化的列(黃色)。 對於每一行,我正在查看每隔一列(在這種情況下,我僅將格式應用於綠色列-因此是i * 2偏移量)。 有時我想對單元格應用條件格式(如果單元格中的值不是空白或日期)。 如果這樣做,我想應用一個數據欄,該數據欄的最大數量基於緊靠右邊的單元格(黃色列)。 最終,黃色列將被隱藏。

編輯3:我找到了解決方案(見下文)。 問題出在刪除單元格的代碼的一部分。 使用大量的條件格式設置規則,這會大大減慢任何單元格刪除的速度,從而導致程序運行非常非常緩慢。

我終於找到了解決方案。

該過程的第一步是刪除多個單元格。

第二步是將5000個條件格式設置規則應用於每個單元格。

嘗試刪除仍適用所有這些規則的單元格非常緩慢。 因此,最好的編碼方法是先刪除所有單元格,然后在程序末尾應用所有條件格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM