这是我的第一个问题,所以要温和,我在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中.我确信这很容易,但我似乎无法在我找到的文档中找到解决方案.有没有办法做到这一点,或者所有这些都必须在他们自己的模块中?
几乎是你的以下代码:
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)是A1和Cell(5,1)是A5.它们都声明了允许范围的开始和结束.
以下是Worksheet_ChangeMDSN 中的事件文档- https://msdn.microsoft.com/en-us/library/office/ff839775.aspx