对于一个越来越大的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中单元格发生变化时调用宏。我尝试使用表单源代码进行每次更改。 但是它然后使用用户在更改之后跳转到的单元格而不是之前编辑的单元格。
如何让这个宏调用每个已更改的单元格,而不是新的选择单元格?
答案 0 :(得分: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中的一个需要为空白,但空白旁边的B中的值必须具有 ColorIndex 值且不能为空。我建议用零清空电池中的所有颜色,但我看不出你的表格是什么空的'细胞看起来像..
For..Each
循环用于处理一次更改多个单元格的位置,它会对每个更改的单元格执行颜色更改。
此外,细胞会改变'由于公式更改而不是编辑的结果,使用此方法不会更改。