Как получить доступ к рабочему листу, ячейкам, с помощью кодового имени в виде переменной?

Если Вы предпочитаете использовать кодовое (программное) имя рабочего листа, диаграммы, то, скорее всего, уже заметили, что это имя приходится указываться в виде константы, если же это неприемлемо, и Вам необходимо получить доступ к рабочему листу и его ячейкам, но при этом кодовое имя должно быть переменным, то решить поставленную задачу можно, как минимум, двумя способами:

  1. вариант:
    code: #vba
    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
  2. вариант:
    code: #vba
    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
Поделиться:

Похожие статьи: