VBA: Копирование изображения из другой проблемы листа;буфер обмена не очищается? - PullRequest
0 голосов
/ 17 июня 2019

у меня два листа; cal и sketch. В sketch у меня есть две картинки; Picture 1 и Picture 2. В таблице cal у меня есть ячейка с выпадающим списком; содержимое списка 'Port' и 'Starboard'.

Я бы хотел, чтобы копия 1 или 2 была скопирована в cal.Cells(25, 1) при изменении раскрывающегося списка; заменяя любую картинку, которая была там до того

У меня есть код, работающий для смены ячейки, и он копирует изображение. Он просто ВСЕГДА копирует Рисунок 1.

Sub import_sketch()

    Dim my_sketch As Picture

    If Cells(8, 27) = "Port" Then

        Set my_sketch = sketch.Pictures("Picture 1")
        my_sketch.Copy
        cal.Cells(25, 1).PasteSpecial

    End If

    If Cells(8, 27) = "Starboard" Then

        Set my_sketch = sketch.Pictures("Picture 2")
        my_sketch.Copy
        cal.Cells(25, 1).PasteSpecial

    End If

End Sub

В настоящее время скрипт просто вставляется в рисунок 1, независимо от содержимого в раскрывающемся списке. Я знаю, что правый бортовой оператор работает. Похоже, что буфер обмена не очищается, а просто копирует то, что находится в списке первым? Не уверен.

1 Ответ

0 голосов
/ 17 июня 2019

Как уже отмечалось в комментариях, ваша проблема в том, что вы копируете правильное изображение, но не удаляете старые.

Однако, вместо того, чтобы копировать (и удалять) изображения снова и снова, почему бы вам не скопировать их оба на свой лист, а затем просто установить свойство Visible, чтобы оно показывало нужное вам изображение и скрывало его? другой?

Назовите картинки picStarboard и picPort и измените код на

With cal 
    .Shapes("picStarboard").Visible = (.Cells(8, 27) = "Starboard")
    .Shapes("picPort").Visible = (.Cells(8, 27) = "Port")
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...