Excel vba нумерация листов

Обновлено: 07.07.2024

В операторах Visual Basic можно использовать большинство функций листов Microsoft Excel. Список функций листов, которые можно использовать, см. в статье Список функций листов, доступных для Visual Basic.

Некоторые функции листов не используются в Visual Basic. Например, не требуется функция Concatenate, так как в Visual Basic можно использовать оператор & для объединения нескольких текстовых значений.

Вызов функции листа из Visual Basic

В Visual Basic функции листов Excel доступны через объект WorksheetFunction.

Если вы используете функцию листа, для которой требуется ссылка на диапазон в качестве аргумента, необходимо указать объект Range. Например, можно использовать функцию листа Match (ПОИСКПОЗ) для поиска диапазона ячеек. В ячейке листа потребовалось бы ввести формулу, например =ПОИСКПОЗ (9;A1:A10;0). Однако в процедуре Visual Basic необходимо указать объект Range, чтобы получить такой же результат.

Функции Visual Basic не используют квалификатор WorksheetFunction. Функция может иметь такое же имя, что и функция Microsoft Excel, но работать по-другому. Например, Application.WorksheetFunction.Log и Log возвращают разные значения.

Вставка функции листа в ячейку

Чтобы вставить функцию листа в ячейку, укажите функцию в качестве значения свойства Formula соответствующего объекта Range. В следующем примере функция листа RAND (создающая случайное число), назначается свойству Formula диапазона A1:B3 на листе Sheet1 в активной книге.

Пример

В этом примере используется функция листа Pmt, чтобы рассчитать кредитный платеж по ипотечной ссуде. Обратите внимание, что в этом примере используется метод InputBox вместо функции InputBox, чтобы метод мог выполнять проверку типов. Операторы Static приводят к тому, что Visual Basic сохраняет значения трех переменных; они отображаются как значения по умолчанию при следующем запуске программы.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Есть бланк определенной формы.. необходимо в нем сделать в определенных ячейках нумерацию страниц начиная со второй и подставлять значение количества страниц на первом листе. Каким способом это сделать можно..

Есть бланк определенной формы.. необходимо в нем сделать в определенных ячейках нумерацию страниц начиная со второй и подставлять значение количества страниц на первом листе. Каким способом это сделать можно.. ovechkin1973

необходимо в нем сделать в определенных ячейках нумерацию страниц начиная со второй

У вас в примере всего одна ячейка для всех страниц D21

необходимо в нем сделать в определенных ячейках нумерацию страниц начиная со второй

У вас в примере всего одна ячейка для всех страниц D21 AlexM

необходимо в нем сделать в определенных ячейках нумерацию страниц начиная со второй

У вас в примере всего одна ячейка для всех страниц D21 Автор - AlexM
Дата добавления - 17.01.2017 в 15:28

У вас в примере всего одна ячейка для всех страниц D21


Не совсем так.. это сквозная строка и печатается на каждом листе.. Если нажать режим просмотра и полистать вниз, то видно.

У вас в примере всего одна ячейка для всех страниц D21


Не совсем так.. это сквозная строка и печатается на каждом листе.. Если нажать режим просмотра и полистать вниз, то видно. ovechkin1973

У вас в примере всего одна ячейка для всех страниц D21


Не совсем так.. это сквозная строка и печатается на каждом листе.. Если нажать режим просмотра и полистать вниз, то видно. Автор - ovechkin1973
Дата добавления - 17.01.2017 в 15:40

Я это видел, поэтому написал, ячейка одна и значение в ней будет одно сквозное по всем листам.

Я это видел, поэтому написал, ячейка одна и значение в ней будет одно сквозное по всем листам. AlexM

т.е. без колонтитулов ни как? А как тогда общее количестве листов можно посчитать, чтобы в автоформу вставить?

т.е. без колонтитулов ни как? А как тогда общее количестве листов можно посчитать, чтобы в автоформу вставить? ovechkin1973

А Вы надеялись, что в ячейках сквозных строк может быть разное значение?
На то они и сквозные, что хоть и печатаются на каждом листе, но это только видимость, т.к. реально существуют в единственном экземпляре.
Так что с колонтитулами - это скорее всего самое то, что надо.

А Вы надеялись, что в ячейках сквозных строк может быть разное значение?
На то они и сквозные, что хоть и печатаются на каждом листе, но это только видимость, т.к. реально существуют в единственном экземпляре.
Так что с колонтитулами - это скорее всего самое то, что надо. Alex_ST

Да, тёзка, вот ЭТО, похоже, должно работать.
Только надо подумать, как чуть подпилить, чтобы не жёстко задавать столбец для ячеек с номерами страниц.
Может быть, перед началом нумерации предложить юзеру выделить столбец?
А про HPageBreaks я к стыду своему даже не слышал.

Да, тёзка, вот ЭТО, похоже, должно работать.
Только надо подумать, как чуть подпилить, чтобы не жёстко задавать столбец для ячеек с номерами страниц.
Может быть, перед началом нумерации предложить юзеру выделить столбец?
А про HPageBreaks я к стыду своему даже не слышал. Alex_ST

Спасибо за участие.. ссылки все пересмотрел. Как использовать в своих целях макрос не понял. Осилил только колонтитулы в правом нижнем углу каждой страницы .. типа 1 из 5.. как посчитать общее количество листов не представляю

Спасибо за участие.. ссылки все пересмотрел. Как использовать в своих целях макрос не понял. Осилил только колонтитулы в правом нижнем углу каждой страницы .. типа 1 из 5.. как посчитать общее количество листов не представляю ovechkin1973

[/vba] Автор - AlexM
Дата добавления - 17.01.2017 в 19:06

AlexM, я перенес макрос в свой файл и вставил "&Sheet_Page_Count("Шапка") на лист "заполнение шапки" в ячейку G7. Из нее уже в автоформу на листе "Шапка" вставил.
Если начать добавлять листы или убирать не меняются значения.. что не так делаю?
Точнее что надо делать, чтобы пересчет был, если добавили листы или убрали?
Я в макрос абсолютный нуль.. могу только их вставлять в свои файлы.. да и то, если все просто.
Правда если встать в ячейку, где написано Sheet_Page_Count("Шапка") и нажать энтер, то перерасчет происходит

AlexM, я перенес макрос в свой файл и вставил "&Sheet_Page_Count("Шапка") на лист "заполнение шапки" в ячейку G7. Из нее уже в автоформу на листе "Шапка" вставил.
Если начать добавлять листы или убирать не меняются значения.. что не так делаю?
Точнее что надо делать, чтобы пересчет был, если добавили листы или убрали?
Я в макрос абсолютный нуль.. могу только их вставлять в свои файлы.. да и то, если все просто.
Правда если встать в ячейку, где написано Sheet_Page_Count("Шапка") и нажать энтер, то перерасчет происходит ovechkin1973

2 Ответ от JSmаn 2011-06-28 23:10:11

  • JSmаn
  • Администратор
  • Неактивен











BeS Yara, если не затруднит, напишите суть проблемы с примером кода, а также решение с комментарием. И тогда можно будет пополнить замечательную Коллекцию :-)

3 Ответ от BeS Yara 2011-06-29 12:09:42 (изменено: BeS Yara, 2011-06-29 12:28:16)

  • BeS Yara
  • Разработчик
  • Неактивен

Как выяснилось при прочтении статьи, локализованный офис не всегда принимает нелокализованные коды(формула в ячейке, кстати, тоже чувствительна к локализации - если попробовать в русском офисе использовать английскую функцию для суммы, например, можно в этом убедиться).
Так как приложение возможно будет запускаться не только с 2003-м и не только с руссифицированным, то вариант подставлять локализованные коды не подходит. Так вот в статье и предлагается указывать и английские коды и локализованные. В этом случае эксель игнорирует(и не отображает) те что не знает и отрабатывает знакомые:
Приводить всю процедуры смысла нет - проблема с конкретным свойством.

&С и &К - буквы русские!


P.S. Не знаю насколько тянет на коллекцию, хотя несколько ценных часов на поиск этого решения я потратил, так что лишним не будет(как часть Вашей темы "WSH: преобразуем макрос VBA в скрипт VBScript" ).

При печати файла Excel вам может потребоваться вставить номера страниц в страницы, чтобы напечатанный файл был аккуратным и читабельным. В этой статье я расскажу о некоторых быстрых приемах, как вставить номера страниц в ячейку, верхний или нижний колонтитул.

Вставить номер страницы в верхний / нижний колонтитул на одном листе

Обычно мы можем быстро вставить номера страниц в верхний или нижний колонтитул, используя Верхний и нижний колонтитулы функции, сделайте следующее:

1. Перейдите к листу, номера страниц которого вы хотите вставить в верхний или нижний колонтитул.

2. Затем нажмите Вставить > Верхний и нижний колонтитулы, и ваш рабочий лист будет в Макет страницы просмотреть, см. снимок экрана:

документ вставить номера страниц 1

3. Щелкните верхний или нижний колонтитул, куда вы хотите вставить номер страницы, а затем Дизайн вкладка с Инструменты для верхних и нижних колонтитулов отображается на ленте, затем щелкните Дизайн > Номер страницы, см. снимок экрана:

документ вставить номера страниц 2

документ вставить номера страниц 3

5. Теперь вы можете вернуться к нормальному виду, нажав Вид > Обычный запуск, и когда вы распечатаете этот рабочий лист, вы увидите, что номера страниц были вставлены в выбранный вами верхний или нижний колонтитул.

документ вставить номера страниц 4

Вставить номер страницы в верхний / нижний колонтитул на нескольких листах

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

1. Выберите все вкладки листа, затем перейдите к Макет страницы вкладку и щелкните Кнопка запуска диалогового окна значок в Параметры страницы группа, см. снимок экрана:

документ вставить номера страниц 5

2. В Параметры страницы диалоговое окно, щелкните Верхний / нижний колонтитул Вкладка, а затем нажмите кнопку Пользовательский заголовок or Пользовательские Подвал чтобы установить нужный верхний или нижний колонтитул, см. снимок экрана:

документ вставить номера страниц 6

документ вставить номера страниц 7

4. Затем нажмите OK > OK Чтобы закрыть диалоговые окна, при печати этой книги в предварительном просмотре печати вы можете видеть, что все номера страниц вставлены в верхний или нижний колонтитул в последовательном порядке.

Вставить номер страницы в ячейку с кодом VBA

Вам легко вставить номера страниц в верхний или нижний колонтитул, но, если вам нужно вставить номера страниц в ячейку листа, у вас нет прямого способа сделать это. Следующий код VBA может помочь вам решить эту проблему.

1. Щелкните ячейку, в которой вы хотите отобразить номер страницы этой ячейки.

2. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.

3. Нажмите Вставить > Модульи вставьте следующий код в Модуль Окно.

Код VBA: вставить номер текущей страницы в ячейку:

4, Затем нажмите F5 ключ для запуска этого кода, и номер страницы этой ячейки отображается в выбранной ячейке, см. снимок экрана:

документ вставить номера страниц 8

Удалить сразу все номера страниц в Excel

Чтобы удалить все номера страниц, вы можете выполнить следующие действия:

1. Выберите все вкладки листа и перейдите к Макет страницы вкладку на ленте, затем щелкните Кнопка запуска диалогового окна значок в Параметры страницы группа, см. снимок экрана:

документ вставить номера страниц 9

2. В Параметры страницы диалоговое окно, нажмите Верхний / нижний колонтитул вкладку, а затем выберите (Нет) из заголовок or нижний колонтитул выпадающий список, см. снимок экрана:

документ вставить номера страниц 10

3. Затем нажмите OK Кнопка, все номера страниц удаляются из книги сразу.

Читайте также: