Image 根据单元格值切换隐藏图片

Image 根据单元格值切换隐藏图片,image,excel,vba,Image,Excel,Vba,我不是VBA方面的专家,我所知道的都是基于浏览互联网,但一些简单的代码对我来说很有用 我正在根据P52值切换图片,这非常有效,但是我想根据单元格值P117切换不同的图片,而这部分代码对我来说并不适用。我在代码中遗漏了什么 Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False If Target.Address <> "$P$52" Then Exit Su

我不是VBA方面的专家,我所知道的都是基于浏览互联网,但一些简单的代码对我来说很有用

我正在根据P52值切换图片,这非常有效,但是我想根据单元格值P117切换不同的图片,而这部分代码对我来说并不适用。我在代码中遗漏了什么

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False

    If Target.Address <> "$P$52" Then Exit Sub
    With ActiveSheet
        Select Case Target.Value
            Case "Horizontal - feet"
                .Pictures("B3A").Visible = True
                .Pictures("V1A").Visible = False
                .Pictures("V1AF").Visible = False
            Case "Vertical - simple"
                .Pictures("B3A").Visible = False
                .Pictures("V1A").Visible = True
                .Pictures("V1AF").Visible = False
            Case "Vertical - lantern"
                .Pictures("B3A").Visible = False
                .Pictures("V1A").Visible = False
                .Pictures("V1AF").Visible = True
        End Select
    End With


    If Target.Address <> "$P$117" Then Exit Sub
    With ActiveSheet
        Select Case Target.Value
            Case "Right"
                .Pictures("3P1").Visible = True
                .Pictures("3P1M").Visible = False
            Case "Left"
                .Pictures("3P1").Visible = False
                .Pictures("3P1M").Visible = True

        End Select
    End With
End Sub

感谢您的帮助。

仔细考虑导致您退出sub的if语句的逻辑

如果单元格是P117,您将点击第一条If语句,这将导致您立即退出子单元格。所以你永远也不会得到你的第二张支票

将每个操作的逻辑嵌入我在这里展示的if语句中,如果单元格范围是P52或P117,您将能够做一些事情

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
    'only do the following operation if your cell address is P52 - don't exit out
    'of your entire code if it's not
    If Target.Address = "$P$52" Then
        With ActiveSheet
            Select Case Target.Value
                Case "Horizontal - feet"
                    .Pictures("B3A").Visible = True
                    .Pictures("V1A").Visible = False
                    .Pictures("V1AF").Visible = False
                Case "Vertical - simple"
                    .Pictures("B3A").Visible = False
                    .Pictures("V1A").Visible = True
                    .Pictures("V1AF").Visible = False
                Case "Vertical - lantern"
                    .Pictures("B3A").Visible = False
                    .Pictures("V1A").Visible = False
                    .Pictures("V1AF").Visible = True
            End Select
        End With
    End If

    'you skip to down here if it is NOT P52, which then lets you check again to 
    'see if it's P117
    If Target.Address = "$P$117" Then
        With ActiveSheet
            Select Case Target.Value
                Case "Right"
                    .Pictures("3P1").Visible = True
                    .Pictures("3P1M").Visible = False
                Case "Left"
                    .Pictures("3P1").Visible = False
                    .Pictures("3P1M").Visible = True

            End Select
        End With
    End If
End Sub

如果要进行大量这样的检查,可能还需要为Target.Address创建一个Select case语句。考虑到您在这里提出的要求,很难说哪一个更适合您。

非常感谢,这很有帮助。我的喷气式飞机布瑞恩今天早上不想工作:-BTW谢谢你为Toal.Adter选择案例的想法,下次我会考虑的。这两种情况P52和P117将是这张表的唯一情况。@user3541430太好了!如果这回答了你的问题,请随意点击小复选框接受它作为答案-这有助于其他人意识到你的问题得到了回答。