|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.04.2014, 08:57 | #1 |
Пользователь
Регистрация: 07.03.2014
Сообщений: 12
|
Цикл VBA для нижних колонтитулов с нумерацией
Здравствуйте.
Не могу понять как сделать цикл для разделов документа, чтобы выстроить нумерацию. Вид документа следующий: начало документа состоит из нескольких разделов(величина разная), в которых нумерация отсутствует, затем идет раздел в котором в нижнем колонтитуле есть таблица, в таблице нумерация и мне надо в первом разделе(который с таблицей и нумерацией) задать начальное значение (пусть "3"), затем в последующих разделах (аналогично выстроенных с таблицей и нумерацией) продолжить нумерацию. Dim S As Word.Section Dim f As Word.HeaderFooter ' разделы документа For Each S In ActiveDocument.Sections ' нижний колонтитул Set f = S.Footers(wdHeaderFooterPrimary) ' наличие таблиц If f.Range.Tables.count <= 0 Then ' наличие нумерации ElseIf f.PageNumbers.count <= 0 Then Else ' параметры нумерации With f.PageNumbers .RestartNumberingAtSection = True .StartingNumber = 3 End With ' выход или как то по другому организовать можно? Дабы не изменить первую нумерацию первого раздела с таблицей... Exit For End If Next S ' Тут организовать продолжение нумерации по остальным найденным разделам( .RestartNumberingAtSection = False) или задать второй цикл For each .... Next ? End Sub Схемка документа: раздел (без таблицы и нумерации) ... раздел (без таблицы и нумерации) Раздел с таблицей и нумерацией (задать начальное значение "3") Раздел с таблицей и нумерацией ("Продолжить нумерацию") |
17.04.2014, 09:35 | #2 |
Пользователь
Регистрация: 07.03.2014
Сообщений: 12
|
Делюсь двумя вариантами решения моей задачки.
Sub Start_number(ByVal desired_number As Long) Dim s As Section, f As Boolean: f = True For Each s In ActiveDocument.Sections With s.Footers(1).PageNumbers If .count > 0 Then 'Проверка наличия нумерации. .RestartNumberingAtSection = f If f Then .StartingNumber = desired_number: f = False End If End With Next s End Sub Sub Start_number_PAGE_3() ' Этот макрос запускает верхний ' Чтобы изменить начальную нумерацию изменить число "3" Start_number 3 End Sub Sub НУмерацияС3ПродолжитьНумерацию() Dim s As Word.Section Dim f As Word.HeaderFooter Dim B As Boolean B = False ' признак продолжения ' разделы документа For Each s In ActiveDocument.Sections ' нижний колонтитул Set f = s.Footers(wdHeaderFooterPrimary) ' продолжаем нумерацию If B Then f.PageNumbers.RestartNumberingAtSec tion = False ' наличие таблиц ElseIf f.Range.Tables.count <= 0 Then ' наличие нумерации ElseIf f.PageNumbers.count <= 0 Then Else ' первый раздел нумерации B = True ' параметры нумерации With f.PageNumbers .RestartNumberingAtSection = True .StartingNumber = 3 End With End If Next s End Sub |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Цикл в UserForm (VBA) | Limon153 | Помощь студентам | 0 | 24.05.2013 20:43 |
написать процедуры для “Цикл For ... Next ” и «Цикл Do ... Loop» по ниже приведенному условию | Кристина_Патачиц | Microsoft Office Excel | 3 | 17.04.2013 17:01 |
цикл vba | deemka777 | Microsoft Office Excel | 5 | 10.09.2012 10:59 |
Печать верхних и нижних строк на каждом листе. Растяжка формул по объедененным ячейкам. | vamesc | Microsoft Office Excel | 4 | 09.03.2011 13:18 |
VBA. Нужно прокрутить цикл для нескольких листов книги | Julit | Microsoft Office Excel | 14 | 29.12.2010 17:19 |