2

私が集めたものから、ワークブックのシート間で条件付き書式を設定することはできないため、現在やろうとしているのは VBA を使用することです。

シート 1 のドロップダウン リストで単語 (「はい」または「いいえ」としましょう) を選択してください。次に、セルの範囲に色を付けます。シート 3 の範囲 ("J3:P29")! 「はい」を選択すると範囲が色付けされ、「いいえ」を選択すると範囲は色付けされません。

マクロレコーダーを使用して、以下のコードを記録しました。ただし、ドロップダウン リストからの選択は記録されません。アクションをコンマに置き換えただけです。

Sub RangeRed()
'
' RangeRed Macro
'

'
    Range("J3:P29").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End Sub

助けていただければ幸いです。ありがとう!

4

1 に答える 1

0

いくつかの変更を加える必要があります。

  1. Worksheet_Changesheet1 のイベントを利用して、sheet3 を更新する必要があります。
  2. コードでは、sheet1 ワークシート イベントから選択できないため、sheet3 を直接参照する必要があります。
  3. 値を使用してTarget、指定した条件を満たしているかどうかを評価し、必要に応じて sheet3 を更新します。

VB エディターを開き、Sheet1 コードを開きます。次に、次のコードを貼り付けます。

Private Sub Worksheet_Change(ByVal Target As Range)
' Target.Value will be contain the value of the changed cell
If Target.Value = "Yes" Then 
    With ThisWorkbook.Sheets("Sheet3").Range("J3:J5").Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255 
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
Else
    With ThisWorkbook.Sheets("Sheet3").Range("J3:J5").Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 0 ' change to whatever color you want if Yes is not selected
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End If

End Sub

Targetシートで変更されたセル範囲をキャプチャすることに注意してください。それに対抗するために、ドロップダウンを持つセルに名前を付けることができます。その後、Worksheet_ChangeイベントでTargetは、範囲の名前が一致するかどうかのみを評価します。例えば

If Target.Name = "MyDropDown" Then
     ' Evaluate the value of Target and update sheet3 as intended

End If
于 2013-09-10T02:51:39.263 に答える