我可以进行旋转,只是隐藏和取消隐藏三个图像不起作用。我有一个“if”“else”循环,用于通过 vlookup 自动填充 90、135 或 180 度的三个值。当我运行代码时,它似乎只是选择了我告诉隐藏的两个图像之一。对我来说真正奇怪的是,并不总是第一组被隐藏,有时是第二组。我不明白如何更改代码以使其隐藏每个“if”场景的两个图像。
这是我到目前为止的代码,只有用于隐藏组的 if-else 循环不起作用:
Sub Macro1()
response = MsgBox("Are you sure the SP# is correct?", vbYesNo, "Angle Confirmation")
If response = vbNo Then
Exit Sub
End If
Dim x As Integer
x = Range("D23").Value
ActiveSheet.Shapes.Range(Array("Group 2")).Select
Selection.ShapeRange.IncrementRotation x
If Range("B24").Value = 90 Then
ActiveSheet.Shapes("Group 13").Visible = False: ActiveSheet.Shapes("Group 25").Visible = False
ElseIf Range("B24").Value = 135 Then
ActiveSheet.Shapes("Group 5").Visible = False: ActiveSheet.Shapes("Group 25").Visible = False
ElseIf Range("B24").Value = 180 Then
ActiveSheet.Shapes("Group 5").Visible = False: ActiveSheet.Shapes("Group 13").Visible = False
End If
End Sub
您的代码的问题在于它不会取消隐藏以前隐藏的形状,尽管 B24 值是正确的。这就是为什么你的结果看起来“很奇怪”。
尝试使用此代码来隐藏并根据 B24 值取消隐藏形状。 它首先配置每个形状的可见性值。 然后根据 B24 的值设置每个形状的可见性。 “配置”的优点:如果有更多组,您只需将它们添加到数组中即可。
Public Sub hideGroupsBasedOnB24()
Dim arrConfig(2, 1) As Variant
'first dimension: group name, second dimension visible value
arrConfig(0, 0) = "Group 5": arrConfig(0, 1) = 90
arrConfig(1, 0) = "Group 13": arrConfig(1, 1) = 135
arrConfig(2, 0) = "Group 25": arrConfig(2, 1) = 180
Dim i As Long
With ActiveSheet
For i = 0 To UBound(arrConfig, 1)
.Shapes(arrConfig(i, 0)).Visible = .Range("B24").Value = arrConfig(i, 1)
Next
End With
End Sub