2013-02-24 6 views
0

я использовал следующий код в надстройке:Невозможно активировать лист в книге, используя надстройку

Sub MacroToRunOne() 

Dim S As String 
S = "Hello World From One:" 
MsgBox S 

Workbooks("86750").Sheets("PIVOT").Activate 

End Sub 

, когда я бегу этот макрос я получаю сообщение об ошибке: «выхода за пределы» после утверждения msgbox. Есть ли какая-то проблема с моей операцией активации или это не способ ее кодирования?

+0

Что вы пытаетесь достичь с помощью оператора активации? Является ли рабочая тетрадь 86750 рабочей книгой, из которой находится макрос? – Sam

+0

Да ... Это рабочая тетрадь – user2089895

+0

Хорошо, если это рабочая тетрадь, с которой вы работаете, вам лучше использовать ThisWorkbook.Sheets («PIVOT»). Активировать – Sam

ответ

2

Вы имеете в виду книгу с именем "86750" (без расширения), которой не существует.

Возможно, вы имели в виду поставить Workbooks("86750.xlsx"), что будет означать (открыть) книгу с именем файла 86750.xlsx. Обратите внимание, что если бы вы предоставили числовой аргумент, i, т. Е. Workbooks(86750), вы бы запросили книгу i по индексу всех открытых книг. Однако это не то, что вы делали.

+0

Возможно, существует ограничение на количество открытых книг - кто-нибудь знает, есть ли там? – JustinJDavies

+1

+1. Чтобы уточнить, это не столько проблема индекса, сколько проблема с именем. Это не сработало, потому что код искал книгу под названием «86750» и потерпел неудачу, потому что требуется расширение. Попытка «Workbooks (« 1 »)' не удастся, даже если будет открыта одна или несколько книг, тогда как «Workbooks (1)» будут работать. Точно так же «Workbooks (« JustinDavies ») будут терпеть неудачу, тогда как« Workbooks («JustinDavies.xlsx») будут работать.
Я думаю, что ограничение рабочей книги зависит от памяти. Хороший байк! –

+0

обновленный ответ, чтобы отразить комментарий Дуга – JustinJDavies

Смежные вопросы