Excel VBA - 多个子对不同的项目做同样的事情

1 excel vba excel-vba

这是我的第一个问题,所以要温和,我在Excel中使用VBA是全新的.我找到了一个完成我想要的子程序:根据特定单元格的输入或值改变形状的颜色.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160704
    If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) Then
        If Target.Value < 10 Then
            ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbRed
        ElseIf Target.Value >= 10 And Target.Value < 20 Then
            ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbYellow
        ElseIf Target.Value >= 20 And Target.Value < 30 Then
            ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbBlue
        Else
            ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbGreen
        End If
    End If
Run Code Online (Sandbox Code Playgroud)

我想做的是运行最多5个形状的相同精确子,其中值出现在单元格A1:A5中.我确信这很容易,但我似乎无法在我找到的文档中找到解决方案.有没有办法做到这一点,或者所有这些都必须在他们自己的模块中?

Vit*_*ata 5

几乎是你的以下代码:

If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
Run Code Online (Sandbox Code Playgroud)

如果更改的单元格不是A1,则退出.你必须详细说明,如果值在A1:A5中,则不允许退出.这可以通过以下方式实现:

If Intersect(Target, Range(Cells(1, 1), Cells(5, 1))) Is Nothing Then Exit Sub
Run Code Online (Sandbox Code Playgroud)

Cells(1,1)A1Cell(5,1)A5.它们都声明了允许范围的开始和结束.

以下是Worksheet_ChangeMDSN 中的事件文档- https://msdn.microsoft.com/en-us/library/office/ff839775.aspx