перерисовка формы vba - PullRequest
       1

перерисовка формы vba

0 голосов
/ 19 января 2019

Если в Excel добавить форму на лист, а затем удалить ее, объект формы все еще остается в памяти.Есть ли способ перерисовать эту форму?Пожалуйста, смотрите код ниже для справки.

Sub DrawTest()
    Dim x As Excel.Shape

    Set x = ActiveSheet.Shapes.AddLine(100, 100, 200, 200)
    Debug.Print (x Is Nothing) & " " & ObjPtr(x) 'Returns:  False 39620608

    x.Delete
    Debug.Print (x Is Nothing) & " " & ObjPtr(x)  'Returns:  False 39620608

    '
    ' Can I redraw it, at this point??    '
    '

    Set x = Nothing
    Debug.Print (x Is Nothing) & " " & ObjPtr(x)  'Returns:  True 0

End Sub

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Нет, вы не можете перерисовать эту форму.

Кроме того, фактическая фигура не остается в памяти, но переменная x все еще выделяет пространство для этой фигуры.

Следовательно, x по-прежнему Not Nothing и будет до тех пор, пока вы не установите его ссылку на none (как вы делали до последнего оператора Debug.Print)

Извините за плохие новости.

0 голосов
/ 19 января 2019

Справка Microsoft утверждает, что метод shape.delete предназначен для удаления фигуры. Если вы хотите использовать фигуру позже, то .visible = true / false может помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...