2017-11-19 22 views
0

次のVBAコードを使用して、色に基づいてセルの値を変更しますが、色付きセルを含む選択したすべてのセルが変更されます。この点で私を助けてください -セルの色に基づいてExcelのセルの値を変更します

Sub ChangeValueBasedOnCellColor() 
    Dim rg As Range 
    Dim xRg As Range 
    Set xRg = Selection.Cells 
    Application.DisplayAlerts = False 
    For Each rg In xRg 
     With rg 
      Select Case .Interior.Color 
       Case Is = 16777215 
        .Value = "OFF" 

      End Select 
     End With 
    Next 
    Application.DisplayAlerts = False 
End Sub 
+0

私にとって、**色付けされていない細胞は「オフ」という言葉に変更されます。 – YowE3K

+0

16777215 ..色のインデックス.ifそれは、そのセルに単語を置く必要があります一致します。しかし、私の場合、すべての選択された細胞でそれは控える。 –

+0

'MsgBox rg.Address&" | " &rg.Interior.Color'文を 'For Each rg In xRg'の直後に置いて、変更すると予想されるいくつかのセルと、同じままであると予想するいくつかのセルを含む小さなセレクションでコードを実行してみてください。各セルに表示される 'Interior.Color'の値を確認してください。 – YowE3K

答えて

2

あなたが持っている問題はありません/解除/デフォルト*背景色と明示的に白に設定の背景色でセルとセルの両方がを持っているということです同じ.Interior.Colorプロパティ値(16777215)。

2つを区別するために、各セルの.Interior.ColorIndexプロパティを確認する必要があります。背景色が設定されていないセルは、.Interior.ColorIndexxlNone-4142)であり、白色背景色が設定されたセルは、に等しい.Interior.ColorIndexである。あなたのデフォルトの場合
*

Sub ChangeValueBasedOnCellColor() 
    Dim rg As Range 
    Dim xRg As Range 
    Set xRg = Selection.Cells 
    Application.DisplayAlerts = False 
    For Each rg In xRg 
    With rg 
     Select Case .Interior.ColorIndex 
     Case Is = 2 
      .Value = "OFF" 
     End Select 
    End With 
    Next 
    Application.DisplayAlerts = False 
End Sub 

注:

はこのように、あなたのコードが正しくOFFに「白」色のセルの値を設定するには、次のように変更する必要があります背景色は白ではなく、.Interior.Colorプロパティ値はで、まだです。これは、デフォルトのセルの色を「変更する」唯一の方法は、色付きの背景画像を追加することによるからです。下にあるセルの背景色は設定されていません。

関連する問題