0

助けてください。vba コーディングで色を操作する方法がわかりません。これをできるだけ簡単に説明しようと思います。

私はD3からAH564までのセルを持っていますが、それらには値がなく、決して値がありません。これらのセルのいずれかの色を青に変更すると、その隣にある 14 個のセル (R1C14) を緑に変更し、次に 14 個のセルを青、再び緑に変更する必要があります。たった3回。セルを緑に変更すると、同じことを行います。

サイトで見つかったいくつかのコードを試して、必要に応じて変更しましたが、それらはすべて値を使用しており、どこから色を付ければよいかわかりません。

背景色は次のとおりです。 青 (RGB) 0、112、192 緑 (RGB) 146、208、80

マクロで14番目のセルを他の色に3回変更したいです。

すべての助けに感謝します。

4

2 に答える 2

1

セルが変更されたときにトリガーされる VBA コードを使用できます。

ただし、セルを別の色にフォーマットしても変更イベントはトリガーされないため、セルの塗りつぶしを変更しただけではマクロは起動されません。

塗りつぶしの色でセルを書式設定する代わりに、数値またはテキストをセルに入力できます。値でセルの色を変更する条件付き書式を使用できます。

セルにテキストまたは数値を入力すると、変更イベントトリガーされ、そのイベントによって他のセルの塗りつぶしの色が簡単に変更されます。

したがって、セルに 1 などの値が含まれている場合は、条件付き書式を設定します。1 の場合は、青色の背景色で書式設定します。この方法では、番号は表示されません。

次に、このマクロを使用します ([シート] タブを右クリックし、[コードの表示] をクリックして、コード ウィンドウにコードを貼り付けます)。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D3:AH564")) Is Nothing Then
        If Target = 1 Then
            Target.Offset(0, 14).Interior.Color = RGB(146, 208, 80)
            Target.Offset(0, 28).Interior.Color = RGB(0, 112, 192)
            Target.Offset(0, 42).Interior.Color = RGB(146, 208, 80)
        End If
    End If

End Sub

トリガー セルを範囲全体に配置できるか、列 D だけに配置できるかは明確ではありません。マクロは、定義した内容に対応するように調整できます。

編集:

値をコピーして複数のセルに貼り付ける場合は、次のことを試してください。

オプション明示

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range
    If Not Intersect(Target, Range("D3:AH564")) Is Nothing Then
        If Target.Rows.Count > 0 Then
            For Each cel In Target
                If cel = 1 Then
                    cel.Offset(0, 14).Interior.Color = RGB(146, 208, 80)
                    cel.Offset(0, 28).Interior.Color = RGB(0, 112, 192)
                   cel.Offset(0, 42).Interior.Color = RGB(146, 208, 80)
                End If
            Next cel
        End If
    End If

End Sub
于 2013-04-24T10:23:11.263 に答える