示例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
第一次尝试不错!你需要的是一个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