мы можем щелкнуть конкретную ячейку и выполнить, чтобы показать / скрыть изображение в другой ячейке? - PullRequest
0 голосов
/ 29 марта 2019

пример А1 указан как Джон Доу1, B1 пуст, при нажатии А1, В2 должен показать изображение Джона Доу1, если мы щелкнем по любой пустой ячейке, изображение исчезнет, ​​если нажать А2, Джейн Доу1 появится в 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

1 Ответ

2 голосов
/ 29 марта 2019

Неплохая первая попытка!Здесь вам нужно событие 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
...