私が自動レイアウトを取り除こうとしているインターネットよりも大きくなっている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
ループは、一度に複数のセルが変更された場所を処理することです。変更されたセルごとに色の変更を実行します。
また、編集ではなく式の変更の結果によって「変更」されるセルは、この方法では変更されません。