Страницы: 1
RSS
Как определить индекс рабочей книги
 
Этим всё и сказано.  
В макросах можно обращаться к рабочей книге по индексу - типа WorkBooks(3)  
А вот как его определить?
 
А зачем его определять?  
 
Что вы хотите получить в итоге? Ссылку на какую-то определённую книгу?  
Что вам известно об этой книге? Известно её имя (или путь к файлу)? Открыта ли она?
 
Известно всё, кроме индекса :-)  
Рабочая книга на момент работы с ней - открыта.  
Я уже понял, что можно работать с именем, но всё же...
 
И кстати индекс может быть только у открытой книги, по-моему.
 
ИМХО по индексу к книге удобно обращаться, только если Вы из активной книги ее открывали. Тогда определять индекс не нужно(Вы сами задаете очередность открытия).  
Во всех других случаях может возникнуть путаница с индексами(из какой книги определять их, в одной ли копии приложения открыты и т.д). Надежней, все же по имени, или адресу(пути).
Я сам - дурнее всякого примера! ...
 
Общий вывод: индексы рабочих книг есть, но работать с ними не очень удобно ввиду их "плавучести".  
Огромное всем спасибо!!!  
Отдельное спасибо The_Prist
 
Немного добавлю:  
 
Sub Test()  
   
 ' Обращаться к листу можно по индексу  
 Debug.Print Worksheets(2).Name  
   
 ' Или по имени  
 Debug.Print Worksheets("Лист2").CodeName  
   
 ' А лучше - по кодовому имени, так как оно задается/меняется только в VBE или в VBA  
 Debug.Print Лист2.Name  
   
 ' Узнать индекс тоже не сложно  
 Debug.Print Worksheets("Лист2").Index  
 Debug.Print Лист2.Index  
   
End Sub
 
{quote}{login=ZVI}{date=14.07.2010 06:43}{thema=}{post}Немного добавлю:  
 
Sub Test()  
   
 ' Обращаться к листу можно по индексу  
 Debug.Print Worksheets(2).Name  
   
 ' Или по имени  
 Debug.Print Worksheets("Лист2").CodeName  
   
 ' А лучше - по кодовому имени, так как оно задается/меняется только в VBE или в VBA  
 Debug.Print Лист2.Name  
   
 ' Узнать индекс тоже не сложно  
 Debug.Print Worksheets("Лист2").Index  
 Debug.Print Лист2.Index  
   
End Sub{/post}{/quote}Это для коллекции листов.  
А для книг индекс можно найти перебором коллекции, как уже The_Prist прописал :-) А особой полезности в обращении к книге по индексу действительно нет.
 
Все пришли к выводу, что индекс рабочей книги - вещь бесполезная.  
Предлагаю Microsoft подумать над этим :-)
 
{quote}{login=ZVI}{date=14.07.2010 06:43}{thema=}{post}Немного добавлю:  
 
Sub Test()  
   
 \' Обращаться к листу можно по индексу  
 Debug.Print Worksheets(2).Name  
   
 \' Или по имени  
 Debug.Print Worksheets(\"Лист2\").CodeName  
   
 \' А лучше - по кодовому имени, так как оно задается/меняется только в VBE или в VBA  
 Debug.Print Лист2.Name  
   
 \' Узнать индекс тоже не сложно  
 Debug.Print Worksheets(\"Лист2\").Index  
 Debug.Print Лист2.Index  
   
End Sub{/post}{/quote}
Страницы: 1
Читают тему
Наверх