1

数式の結果が 10 以上になる特定の範囲内のすべてのセルに太字を適用する必要があります。次のコードを試してみましたが、太字がランダムに適用されるようです!

Sub BoldHighHours()

Application.ScreenUpdating = False
Dim c As Object

For Each c In Range("I7:AM1005")
   If c.Value >= 10 Then
       c.Offset(0, 1).Font.Bold = True
       c.Offset(0, 2).Font.Bold = True
   Else
       c.Offset(0, 1).Font.Bold = False
       c.Offset(0, 2).Font.Bold = False
   End If
Next
Application.ScreenUpdating = True
End Sub

私の以前の質問/サガに従っている場合は、条件付き書式を使用できない理由を理解できます! オートフィルターは、大量の条件付き書式設定を適切に処理せず、処理速度を大幅に低下させます。

4

1 に答える 1

1

以下を削除する必要がありますOffset()

Sub BoldHighHours()

    Application.ScreenUpdating = False 
    Dim c As Range 

    For Each c In Range("I7:AM1005") 

        If c.Value >= 10 Then 
            c.Font.Bold = True
        Else 
            c.Font.Bold = False 
        End If 

    Next 
    Application.ScreenUpdating = True 

End Sub

私の最適化:

Sub BoldHighHours()

    Application.ScreenUpdating = False 
    Dim c As Long

    For Each c = 9 to 39 ' hopefully i to am..

        ActiveSheet.AutoFilterMode = False

        With Range("A8:A1005").Offset(0, c - 1)

            .Font.Bold = False
            .AutoFilter Field:=1, Criteria1:=">=10"
            .Font.Bold = True
        End With 

    Next 

    ActiveSheet.AutoFilterMode = False
    Application.ScreenUpdating = True 

End Sub
于 2013-04-05T10:30:09.553 に答える