在单击另一个单元格并进行一些其他修改后,我需要在上一个单元格上运行宏

时间:2019-01-14 17:50:58

标签: excel vba

基本上,我正在尝试创建此excel宏表,以便当我单击任何单元格(在表区域内)并输入一些值时,如果它的总和等于(例如下图所示)的键值,该行和列,它会更改单元格颜色或保留它。

enter image description here

Sub Add_Nos()

Dim r As Integer
Dim c As Integer
Dim active As Integer

r = Worksheets("Sheet1").Cells(ActiveCell.Row, "A").Value
c = Wor

Worksheets("Sheet1").Cells(1, ActiveCell.Column).Value

active = ActiveCell.Value
If active = r + c Then        
    ActiveCell.Interior.ColorIndex = 4
Else
    ActiveCell.Interior.ColorIndex = 0
End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Selection.Count = 1 Then
    Call Add_Nos
End If

End Sub

我希望当我在一个单元格中输入某个值然后单击其他某个单元格时,它将验证输入的值并相应地使颜色变色。但是,输入一些值后,当我单击离开然后再次单击返回时,只有它会验证并显示一些颜色。...

=>此外,我想锁定关键单元格的值并更改其颜色以使它们在视觉上保持差异。

2 个答案:

答案 0 :(得分:0)

我认为下面的代码就是您要实现的目标:

Option Explicit


Sub Add_Nos(myRow As Long, myCol As Long, ByRef myTarget As Range)

Dim r As Long, c As Long

With Worksheets("Sheet1")
    r = .Cells(myRow, "A").Value
    c = .Cells(1, myCol).Value
End With

If myTarget.Value = r + c Then
    myTarget.Interior.ColorIndex = 4
Else
    myTarget.Interior.ColorIndex = 0
End If

End Sub

'===============================================================

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count = 1 Then
    Add_Nos Target.Row, Target.Column, Target
End If

End Sub

答案 1 :(得分:0)

imgur comments所述,请进行条件格式设置! See exemple

如果单元格的值不等于行和列的总和,则此方程使单元格为红色。您可以将<>替换为=,然后将格式更改为绿色,现在,情况就完全相反了(具有良好值的单元格以绿色突出显示)。不要忘记您的范围内的$(或缺少它),因为这才使它高效。