Ссылки на листы по номеру индекса
Номер индекса — это последовательный номер, присваиваемый листу, основанный на положении его вкладки листа (отсчет слева) между листами того же типа. Следующая процедура использует свойство Worksheets для активации первого листа в активной книге.
Sub FirstOne() Worksheets(1).Activate End Sub
Если вы хотите работать со всеми типами листов (листами, диаграммами, модулями и листами диалоговых окон), используйте свойство Листы . Следующая процедура активирует четвертый лист в книге.
Sub FourthOne() Sheets(4).Activate End Sub
Примечание Порядок индексов может измениться при перемещении, добавлении или удалении листов.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Обратная связь
Были ли сведения на этой странице полезными?
[VBA] Обращение к листу по имени в макросе Excel
Вообщем, у вас в VBA IDE вместо имён листов стоят знаки ______, и макросы не воспринимают вариант Sheets(«лютий»), потому что в языковых настройках системы неверно выставлен параметр: Язык программ, не поддерживающих Юникод — нужно выбрать Русский (или украинский).
- Откройте Панель управления (для этого, нажмите комбинацию клавиш Win+R и введите слово control затем кнопку ОК).
- Найдите пункт Изменение форматов даты, времени и чисел и нажмите его (может называться немного иначе, например «Часы и регион«) — дальше вероятно, придётся ещё раз нажать пункт «Регион«
- В открывшемся диалоговом окне перейдите на вкладку Дополнительно и убедитесь, что Язык программ, не поддерживающих Юникод выбран Русский (Россия). Если другой, нажимаете изменить язык системы и выбираете Русский или Украинский.
- После нажатия ОК перезагружайте компьютер.
После этого к листу можно будет обращаться макросом Sheets(«лютий») т.е. по имени.
// Прим.: также, вариант решения см. в посте № 4.
Использование функций листов Excel в Visual Basic
В операторах Visual Basic можно использовать большинство функций листов Microsoft Excel. Список функций листов, которые можно использовать, см. в статье Список функций листов, доступных для Visual Basic.
Некоторые функции листов не используются в Visual Basic. Например, не требуется функция Concatenate, так как в Visual Basic можно использовать оператор & для объединения нескольких текстовых значений.
Вызов функции листа из Visual Basic
В Visual Basic функции листов Excel доступны через объект WorksheetFunction.
В следующей процедуре Sub используется функция листа Min для определения наименьшего значения в диапазоне ячеек. Сначала переменная myRange объявляется как объект Range, а затем ей присваивается диапазон A1:C10 на листе Sheet1. Другой переменной, answer , назначается результат применения функции Min к myRange . В конце значение answer отображается в окне сообщения.
Sub UseFunction() Dim myRange As Range Set myRange = Worksheets("Sheet1").Range("A1:C10") answer = Application.WorksheetFunction.Min(myRange) MsgBox answer End Sub
Если вы используете функцию листа, для которой требуется ссылка на диапазон в качестве аргумента, необходимо указать объект Range. Например, можно использовать функцию листа Match (ПОИСКПОЗ) для поиска диапазона ячеек. В ячейке листа потребовалось бы ввести формулу, например =ПОИСКПОЗ (9;A1:A10;0). Однако в процедуре Visual Basic необходимо указать объект Range, чтобы получить такой же результат.
Sub FindFirst() myVar = Application.WorksheetFunction _ .Match(9, Worksheets(1).Range("A1:A10"), 0) MsgBox myVar End Sub
Функции Visual Basic не используют квалификатор WorksheetFunction. Функция может иметь такое же имя, что и функция Microsoft Excel, но работать по-другому. Например, Application.WorksheetFunction.Log и Log возвращают разные значения.
Вставка функции листа в ячейку
Чтобы вставить функцию листа в ячейку, укажите функцию в качестве значения свойства Formula соответствующего объекта Range. В следующем примере функция листа RAND (создающая случайное число), назначается свойству Formula диапазона A1:B3 на листе Sheet1 в активной книге.
Sub InsertFormula() Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()" End Sub
Пример
В этом примере используется функция листа Pmt, чтобы рассчитать кредитный платеж по ипотечной ссуде. Обратите внимание, что в этом примере используется метод InputBox вместо функции InputBox, чтобы метод мог выполнять проверку типов. Операторы Static приводят к тому, что Visual Basic сохраняет значения трех переменных; они отображаются как значения по умолчанию при следующем запуске программы.
Static loanAmt Static loanInt Static loanTerm loanAmt = Application.InputBox _ (Prompt:="Loan amount (100,000 for example)", _ Default:=loanAmt, Type:=1) loanInt = Application.InputBox _ (Prompt:="Annual interest rate (8.75 for example)", _ Default:=loanInt, Type:=1) loanTerm = Application.InputBox _ (Prompt:="Term in years (30 for example)", _ Default:=loanTerm, Type:=1) payment = Application.WorksheetFunction _ .Pmt(loanInt / 1200, loanTerm * 12, loanAmt) MsgBox "Monthly payment is " & Format(payment, "Currency")
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Ссылки на листы по имени
Листы можно определить по имени с помощью свойств Worksheets и Charts . Следующие инструкции активируют различные листы в активной книге.
Worksheets("Sheet1").Activate Charts("Chart1").Activate
DialogSheets("Dialog1").Activate
Используйте свойство Sheets для возврата листа, диаграммы, модуля или диалогового листа. Коллекция Листов содержит все эти типы листов. В следующем примере активируется лист с именем Chart1 в активной книге.
Sub ActivateChart() Sheets("Chart1").Activate End Sub
Примечание Диаграммы, внедренные в лист, являются членами коллекции ChartObjects, а диаграммы , существующие на собственных листах, относятся к коллекции Диаграммы .
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Обратная связь
Были ли сведения на этой странице полезными?