Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2011, 17:29   #1
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию Перенумерация списка

добрый вечер всем))

подскажите пожалуйста! в написании макросов в Ворде я совсем не бельмеса =ь никак не соображу (Word 2003), и ничего похожего тоже вроде не нашла =((

дано: простая анкета со списком вопросов и вариантами ответов

задача: сделать макрос, который просматривает номера вопросов и перенумеровывает их по порядку, если порядок нарушен (вопросы: Q1, Q2, Q3...). притом созданы они не списком.
Может как-то можно нумерацию именно вопросов загнать в список? хотя там табличная форма.. может какой шаблон при добавлении вопроса..

файл прилагаю
Пример.zip
Bape}l{ka вне форума Ответить с цитированием
Старый 07.09.2011, 21:16   #2
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

1
как показывает строка
ActiveDocumentTablesCount = ActiveDocument.Tables.Count - равно 4, зачем 4 таблицы??
мне кажется одной хватит??
исправите, тогда в 1 й, то есть левый столбец нумерацию, то есть поменяйте
Контрол+Эф9, туда строку MACROBUTTON Ссылка_номер_по_порядку_01 № п\п
И вот макрос
Код:
Sub Ссылка_номер_по_порядку_01()

'расставляет номера по порядку в столбце таблицы ниже ячейки, где находится данное поле и до конца таблицы
'отключаем дёргание экрана при выполнении кода
    Application.ScreenUpdating = False

    Dim cursor_table As Integer
    Dim cursor_row As Integer
    Dim cursor_column_cell As Integer

    'выполнить функцию с именем ...
    FunctionВыясняем_нахождение_курсора_в_таблице _
            cursor_table, _
            cursor_row, _
            cursor_column_cell

    If cursor_table = 32767 Then
        MsgBox$ _
                "Программа не может быть продолжена, курсор должен находится в таблице", vbOKOnly, _
                "Внимание"
        GoTo Конец
    End If

    Dim w As Integer

    For w = 1 To ActiveDocument.Tables(cursor_table).Rows.Count - cursor_row
        ActiveDocument.Tables(cursor_table).Rows(cursor_row + w).Cells(cursor_column_cell).Range.Text = w
    Next

    Beep

Конец:

    'отменяем отключение дёргания экрана при выполнении кода
    Application.ScreenUpdating = True

End Sub

Function FunctionВыясняем_нахождение_курсора_в_таблице( _
         cursor_table, _
         cursor_row, _
         cursor_column_cell)

    Dim isTable As Word.Range
    Set isTable = Selection.Range

    'условие, если Not isTable.Information(wdWithInTable), тогда курсор находится не в таблице, тогда ...
    'cursor_table = 32767 взято в связи с тем, что переменная cursor_table имеет тип данных Integer
    'тип данных Integer может иметь максимальное значение 32767
    If Not isTable.Information(wdWithInTable) Then
        cursor_table = 32767
        'перейти к метке с именем ...
        GoTo Конец
    End If

    'номер таблицы в документе, где расположен курсор
    cursor_table = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count

    'номер строки в таблице, в документе, где расположен курсор
    cursor_row = Selection.Rows.First.Index

    'номер столбца, а также ячейки в таблице, в документе, где расположен курсор, даже если ширина столбца, ячейки различается
    cursor_column_cell = Selection.Cells(1).ColumnIndex

Конец:

    'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта
    Set isTable = Nothing

End Function
Потом по этому полю двойной щелчёк и поле заработает, смотрим, напильник берём дорабатываем
Ципихович Эндрю вне форума Ответить с цитированием
Старый 07.09.2011, 21:39   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Есть предложение организовать стиль "Qномер" с нумерацией. Строкам с Q присвоить этото стиль.
Существующую нумерацию убрать с помощью Ctrl+H, найти "Q[0-9]@. " (без кавычек), заменить на: (пусто), подстановочные знаки.
Теперь можно поставить курсор в любую строку, выбрать стиль "Qномер", и нумерация автоматически обновится:
Вложения
Тип файла: doc Пример1.doc (38.0 Кб, 13 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 08.09.2011 в 14:22. Причина: убрал ненужный макрос
Казанский вне форума Ответить с цитированием
Старый 07.09.2011, 23:02   #4
Gomerchik
Новичок
Джуниор
 
Регистрация: 04.09.2011
Сообщений: 1
По умолчанию Сделать визу

Я делал визу в шенген полгода назад через фирму Консулгруп. Стоило дешевле чем у других. Вот их сайт
Консулгруп
Gomerchik вне форума Ответить с цитированием
Старый 08.09.2011, 11:34   #5
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

Казанский, спасибо, у меня была подобная идея, но не со стилями, а со списком. Ваша идея тоже неплоха))

Ципихович Эндрю - спасибо)) все-таки идея с макросом меня привлекает больше, т.к. мороки меньше.. (или мне так кажется? о.О ). правда, не совсем поняла, что сделать-то нужно, кроме как все в одну таблицу объединить? могли, бы вы файлик примера приложить?
Bape}l{ka вне форума Ответить с цитированием
Старый 08.09.2011, 11:42   #6
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

а если использовать идею со стилями, но сделать макрос, который добавляет шаблон вопроса, т.е. ту табличку для вопроса, при этом стили уже заложены?
подскажите пожалуйста, как это сделать? как стиль макросом задать?
Bape}l{ka вне форума Ответить с цитированием
Старый 08.09.2011, 14:18   #7
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

А какой будет шаблон вопроса? В таблицах разное число строк, Q3 вообще без таблицы. Проще скопировать подходящий вопрос, вставить и отредактировать. Если стиль был назначен, нумерация обновится автоматически.
Вот - в файле "Пример1.doc" скопировал Q3, Q4 и вставил в конец:
Вложения
Тип файла: doc Пример2.doc (40.5 Кб, 12 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 08.09.2011, 16:59   #8
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

Казанский, да, я пришла к такому же выводу..
решила создать шаблон документа, а там уж буду копировать / редактировать / удалять...

А было бы удобно, если б как в Power Point-е можно было панельку с шаблонами вопросов, а там выбираешь который тебе нужно и добавляешь, где курсор стоит... хех.. мячты-мячты... может потом соберусь и сделаю-таки)))

Шаблон_вопроса.doc
Bape}l{ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу, которая формирует 2 списка, и написать процедуру присоединения 2го списка к 1му Neitrosha Помощь студентам 7 25.02.2011 21:18
Удаление последнего элемента из списка и реверс этого списка. Goose Общие вопросы C/C++ 8 16.05.2010 16:12
Сортировка списка 4ika Общие вопросы C/C++ 3 27.11.2009 20:38
Сортировка списка Рамик Помощь студентам 4 11.03.2009 14:01