2017-06-29 40 views
0

对于正在变大的Internet文档,我试图摆脱自动布局,导致他们严重放慢了我们的Excel到延伸到不可用的地步。使用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

将代码置于'WorkSheet_Change'而不是'WorkSheet_SelectionChange'? –

回答

0

把在相应的工作表对象以下应该工作:

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需要为空白,但在B下一空白值必须有一个ColorIndex值并且不能为空。我建议零清空单元格外的所有颜色,但我看不到你的工作表的“空”单元格的样子。

For..Each循环用于处理一次更换多个单元格的位置它会在每个更改的单元上执行颜色更改。

此外,由于公式更改而不是编辑而导致“更改”的单元格不会使用此方法更改。

+0

这个作品很有魅力,谢谢。 – Luuk