Если Вы предпочитаете использовать кодовое (программное) имя рабочего листа, диаграммы, то, скорее всего, уже заметили, что это имя приходится указываться в виде константы, если же это неприемлемо, и Вам необходимо получить доступ к рабочему листу и его ячейкам, но при этом кодовое имя должно быть переменным, то решить поставленную задачу можно, как минимум, двумя способами:
вариант:
Dim iVBComponent As Object
Dim iDiapazon As Range, iWorksheet As Worksheet
iCodeName$ = "Лист2"
Set iVBComponent = ThisWorkbook.VBProject.VBComponents(iCodeName$)
Set iDiapazon = iVBComponent.Properties("Cells").Object
Set iWorksheet = iDiapazon.Worksheet '.Parent
вариант:
Dim iVBComponent As Object
Dim iDiapazon As Range, iWorksheet As Worksheet
iCodeName$ = "Лист2"
Set iVBComponent = ThisWorkbook.VBProject.VBComponents(iCodeName$)
Set iWorksheet = ThisWorkbook.Worksheets(iVBComponent.Properties("Name").Value)
Set iDiapazon = iWorksheet.Cells
Комментарий:
В текущей рабочей книге обязательно должен присутствовать рабочий лист, с указанным кодовым именем, в противном случае возникнет ошибка
Доступ к другим открытым рабочим книгам можно получить, если использовать индекс (номер) или имя нужной книги в семействе Workbooks, например, Workbooks(1).Worksheets или Workbooks ("Personal.xls").VBProject