Обнаружение или удаление Worksheet_Deactivate кода программно в Excel - PullRequest
0 голосов
/ 24 мая 2018

У меня есть макрос, который создает новую рабочую таблицу в активной рабочей книге и заполняет эту рабочую таблицу различными транзакциями из всех других листов рабочей книги в поисках дублирующих записей.

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

Также добавляется код Worksheet_Deactivate на каждый лист, который удаляет кнопку (если она существует)создается путем нажатия одной из ссылок на новом рабочем листе, когда рабочий лист деактивирован.

Иногда я запускаю макрос более одного раза для определенной рабочей книги, который затем добавляет второй код Worksheet_Deactivate к каждому листу, который вызывает ошибки, когда онпытается выполнить.

Мне было интересно, можно ли было сделать одну из двух вещей.Во-первых, можно ли проверить макрос, чтобы увидеть, существует ли код Worksheet_Deactivate до того, как он введен в код (пропуская код, когда код уже существует)?Если нет, то возможно ли просто удалить код (используя обработчик ошибок, если код не существует) непосредственно перед его вводом?

1 Ответ

0 голосов
/ 24 мая 2018

Я нашел решение для того, что искал.В начале макроса я добавил:

Dim VBP As Object
Set VBP = ActiveWorkbook.PVBProject
Dim ln As Long

По мере прохождения макроса он проходит через каждый лист для извлечения информации, текущий обрабатываемый лист устанавливается как ws1.Там, где должен быть введен код Worksheet_Deactivate, я добавил:

success = 0
With VBP.VBComponents("" & ws1.CodeName & "").CodeModule
    For ln = 1 To .CountOfLines
        If InStr(1, .Lines(ln, 1), "Private Sub Worksheet_Deactivate", vbTextCompare) > 0 Then
            success = 1
        End If
    Next ln
End With
If success = 0 Then
    "Bunch of stuff to add the Worksheet_Deactivate code"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...