ExcelVBA与IF else语句有关

时间:2017-07-05 08:35:53

标签: excel vba excel-vba excel-vba-mac

我是excel VBA的新手 我目前正在使用excel vba进行映射。这个概念是,如果我点击单元格c6,它会对适用于它的各种单元格进行着色,同样也会进入单元格C7。 C6和C7都有一个共同的单元格映射,它是单元格E6但是现在我注意到当我点击Cell C6时,这个单元格E6并没有显示它的颜色,但是当我点击C7时,这个单元格E6上的颜色显示了颜色,这意味着我的C7 if else语句覆盖了常见单元格E6上的C6,请问我该如何解决这个问题,以便当我单独点击它们时它们会返回颜色显示。 以下是我的代码:

Sub AccessControl1()
Range("C6").Interior.Color = RGB(255, 255, 0)
Range("D13").Interior.Color = RGB(154, 205, 50)

Range("E6").Interior.Color = RGB(154, 205, 50)

Range("F6").Interior.Color = RGB(154, 205, 50)
Range("AC6").Interior.Color = RGB(154, 205, 50)
Range("BH6").Interior.Color = RGB(154, 205, 50)
Range("DL7").Interior.Color = RGB(154, 205, 50)
Range("DF9").Interior.Color = RGB(154, 205, 50)
Range("DF6").Interior.Color = RGB(255, 20, 147)
Range("DA7").Interior.Color = RGB(255, 20, 147)
Range("DB23").Interior.Color = RGB(255, 20, 147)
Range("DF212").Interior.Color = RGB(255, 20, 147)
Range("DA215").Interior.Color = RGB(255, 20, 147)

End Sub
Sub AccessControl2()
Range("C6").Interior.Color = RGB(255, 255, 255)
Range("D13").Interior.Color = RGB(255, 255, 255)

Range("E6").Interior.Color = RGB(255, 255, 255)

Range("F6").Interior.Color = RGB(255, 255, 255)
Range("AC6").Interior.Color = RGB(255, 255, 255)
Range("BH6").Interior.Color = RGB(255, 255, 255)
Range("DL7").Interior.Color = RGB(255, 255, 255)
Range("DF9").Interior.Color = RGB(255, 255, 255)
Range("DF6").Interior.Color = RGB(255, 255, 255)
Range("DA7").Interior.Color = RGB(255, 255, 255)
Range("DB23").Interior.Color = RGB(255, 255, 255)
Range("DF212").Interior.Color = RGB(255, 255, 255)
Range("DA215").Interior.Color = RGB(255, 255, 255)
End Sub
Sub AccountManagement1()
Range("C7").Interior.Color = RGB(255, 255, 0)

Range("E6").Interior.Color = RGB(154, 205, 50)

Range("AE13").Interior.Color = RGB(154, 205, 50)
Range("AF6").Interior.Color = RGB(154, 205, 50)
Range("AG13").Interior.Color = RGB(154, 205, 50)
Range("AI6").Interior.Color = RGB(154, 205, 50)
Range("AJ13").Interior.Color = RGB(154, 205, 50)
Range("DA189").Interior.Color = RGB(255, 20, 147)
Range("DC195").Interior.Color = RGB(255, 20, 147)
Range("DA192").Interior.Color = RGB(255, 20, 147)
End Sub
Sub AccountManagement2()
Range("C7").Interior.Color = RGB(255, 255, 255)

Range("AE13").Interior.Color = RGB(255, 255, 255)
Range("AF6").Interior.Color = RGB(255, 255, 255)

Range("E6").Interior.Color = RGB(255, 255, 255)

Range("AG13").Interior.Color = RGB(255, 255, 255)
Range("AI6").Interior.Color = RGB(255, 255, 255)
Range("AJ13").Interior.Color = RGB(255, 255, 255)
Range("DA189").Interior.Color = RGB(255, 255, 255)
Range("DC195").Interior.Color = RGB(255, 255, 255)
Range("DA192").Interior.Color = RGB(255, 255, 255)
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Address = "$C$6" Then
    Call AccessControl1
Else
    Call AccessControl2
End If
If Target.Address = "$C$7" Then
    Call AccountManagement1
Else
    Call AccountManagement2
End If
End Sub

1 个答案:

答案 0 :(得分:0)

根据评论

  

单击Cell C6时,应单独调用AccessControl1,单击Cell C7时,需要调用AccessControl2,然后执行AccountManagement1。我对吗? - 是的

将您的Worksheet_SelectionChange更改为以下内容:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Target.Address = "$C$6" Then
        Call AccessControl1
    ElseIf Target.Address = "$C$7" Then
        Call AccessControl2
        Call AccountManagement1
    End If
End Sub