我们可以单击特定单元格并执行以显示/隐藏不同单元格中的图像吗?

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

示例A1列为John Doe1,B1为空白,单击A1时,B2应显示John Doe1的图片,如果单击任何空白单元格,图像消失,如果单击A2,则Jane Doe1显示在B1中,而不是B2,图像只会出现在B1中。即时通讯还在学习编码,请对我的宝贝编码技巧表示怜悯(如果你甚至称之为技能)。

If Selection.Count = 1 Then
    If Range("A:A").Value = "John Doe1" Then
        ActiveSheet.Pictures("John Doe1").Visible = True
        ActiveSheet.Pictures("John Doe2").Visible = False
        ActiveSheet.Pictures("John Doe2").Visible = False
        ActiveSheet.Pictures("Jane Doe1").Visible = False
        ActiveSheet.Pictures("Jane Doe2").Visible = False
        ActiveSheet.Pictures("Jane Doe3").Visible = False
    Else if Range("A:A").Value = "John Doe2" Then
        ActiveSheet.Pictures("John Doe1").Visible = False
        ActiveSheet.Pictures("John Doe2").Visible = True
        ActiveSheet.Pictures("John Doe2").Visible = False
        ActiveSheet.Pictures("Jane Doe1").Visible = False
        ActiveSheet.Pictures("Jane Doe2").Visible = False
        ActiveSheet.Pictures("Jane Doe3").Visible = False
    End If
End If
excel image click hide show
1个回答
2
投票

第一次尝试不错!你需要的是一个Worksheet_SelectionChange()事件 - 它被放置在Sheet模块中(不在Module1中)。

这是一个如何工作的最小例子:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Value = "John Doe1" Then
        ActiveSheet.Pictures("John Doe1").Visible = True
        ActiveSheet.Pictures("John Doe2").Visible = False
        ActiveSheet.Pictures("John Doe3").Visible = False
    ElseIf Target.Value = "John Doe2" Then
        ActiveSheet.Pictures("John Doe1").Visible = False
        ActiveSheet.Pictures("John Doe2").Visible = True
        ActiveSheet.Pictures("John Doe3").Visible = False
    ElseIf Target.Value = "John Doe3" Then
        ActiveSheet.Pictures("John Doe1").Visible = False
        ActiveSheet.Pictures("John Doe2").Visible = False
        ActiveSheet.Pictures("John Doe3").Visible = True
    Else
        ActiveSheet.Pictures("John Doe1").Visible = False
        ActiveSheet.Pictures("John Doe2").Visible = False
        ActiveSheet.Pictures("John Doe3").Visible = False
    End If

End Sub

@ScottCraner的替代解决方案:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveSheet.Pictures("John Doe1").Visible = Target.Value = "John Doe1"
    ActiveSheet.Pictures("John Doe2").Visible = Target.Value = "John Doe2"
    ActiveSheet.Pictures("John Doe3").Visible = Target.Value = "John Doe3"
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.