/ / ExcelマクロでExcel列の背景色を変更する - excel、excel-vba、vba

ExcelマクロでExcelの列の背景色を変更する - excel、excel-vba、vba

私が自動レイアウトを取り除こうとしているインターネットよりも大きくなっているExcel文書に関しては、それらが私たちのExcelをそれが使用不可能になる程度まで深刻に減速させているので。

アクティブセルの値に基づいてセルの背景を着色するマクロを作成しようとしました。

  Sub find()

Dim CurValue  As String
Dim ColorIndex As String
Dim Findr     As Range
Dim MyRange As Range

Set MyRange = ActiveCell
CurValue = ActiveCell.Value

With ActiveCell
Set Findr = Range("A1:A10").find(CurValue)
If Not Findr Is Nothing Then
ColorIndex = Findr.Offset(ColumnOffset:=1).Value
MyRange.Interior.ColorIndex = ColorIndex
"        rngStart.Select
End If
End With

End Sub

このサブは完璧に動作します。

しかし問題のために: 今私はセルが変更されるたびにそれを呼び出したいのですが、セルが私のSheet.Iで変更されるたびにマクロを呼び出す場合はすべての変更に対してシートのソースコードを使用してみました。 しかし、それからそれは前の編集されたセルよりもむしろユーザーが変更の後にジャンプするセルを使います。

どのように私はこの新しいマクロではなくすべての変更されたセルを呼び出すためにこのマクロを得るのですか?

回答:

回答№1は0

適切なWorksheetオブジェクトに次のものを追加するとうまくいきます。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim CurValue  As String
Dim ColorIndex As String
Dim Findr     As Range
For Each AC In Target.Cells
CurValue = AC.Value
Set Findr = Range("A1:A10").find(CurValue)
If Not Findr Is Nothing Then
ColorIndex = Findr.Offset(ColumnOffset:=1).Value
AC.Interior.ColorIndex = ColorIndex
End If
Next
End Sub

注 - A1:A10の1つは空白にする必要がありますが、空白の横のBの値には ColorIndex 値であり、空白にすることはできません。セルからすべての色を削除するにはゼロを推奨しますが、シートの「空白」のセルがどのように見えるかはわかりません。

For..Each ループは、一度に複数のセルが変更された場所を処理することです。変更されたセルごとに色の変更を実行します。

また、編集ではなく式の変更の結果によって「変更」されるセルは、この方法では変更されません。