根据单元格输入显示三组图像中的一组图像

问题描述 投票:0回答:1

我可以进行旋转,只是隐藏和取消隐藏三个图像不起作用。我有一个“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
excel vba if-statement
1个回答
0
投票

您的代码的问题在于它不会取消隐藏以前隐藏的形状,尽管 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
© www.soinside.com 2019 - 2024. All rights reserved.