2015-12-15 2 views
1

У меня есть эта странная проблема. У меня есть проект vba, где исследователь проекта отображает более одного объекта книги. Это точно так же, как в вопросе this SO, но у меня нет никаких ошибочных ссылок для снятия отметки.Более одного объекта книги в проекте explorer

Однако, я знаю, что вызвало это, и я уверен, что вы все можете дублировать. То, что я сделал, было использовать кодовое имя для листа в качестве аргумента byref для простого поднабора и в конце поднабора, опуская объект рабочего листа. Поэтому я обрисовал весь лист по ссылке.

Что-то вроде:

Option Explicit 

Sub test_1() 
    test_2 sh:=Sheet2 
End Sub 

Sub test_2(ByRef sh As Worksheet) 
    Set sh = Nothing 
End Sub 

Если вы запустите test_1, он будет работать без проблем. Но после этого кодовое имя «Sheet2» недействительно. И если вы закрываете и открываете книгу, вы поймете, что я имею в виду. Excel создает новый лист с тем же именем (но другое CodeName). Любые данные, хранящиеся в ячейках листа, не теряются. Старое имя_кода ссылается на объект рабочей книги.

project explorer

Я не нашел способ восстановить или удалить старые ссылки до сих пор (другой тогда переместить все объекты в новой книге). Я использую Excel 2013.

Решение, конечно, не так лишено рабочего листа, но есть ли у кого-нибудь идеи, как восстановить?

+0

Есть ли у вас другая книга Excel? Они будут отображаться в одном редакторе кода. –

+0

@roryap Да, да. И несколько глобальных шаблонов. Но я тестировал этот пример выше и на «пустом» экземпляре excel. Оба показывают то же самое. – Jzz

+0

Как только просто удалить лист в то же время, используя: 'Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True' – Luuklag

ответ

-1

Ну, после страдания этого странного поведения Excel я могу, наконец, сказать, что я попробовал человеческие времена и что могу подтвердить, что причина (по крайней мере для моих экспериментов) действительно использовала пользовательские функции (UDF). Когда выдается лист с экстрактом, нет способа зафиксировать рабочую книгу. Мой подход состоял в том, чтобы просто создать новую Рабочую книгу и скопировать все Модули и все листы со старого (сломанного).

Просто убедитесь, что не использует, если у вас есть эта проблема.

+0

Мне интересно, почему этот ответ был подавлен, но альтернативного ответа не было. По крайней мере, причина для понижающего голоса была бы оценена, мы все могли бы чему-то научиться у нее. – pablete