Статьи из блога
Разбиение списка на части
Галина задала вопрос:
Есть список вопросов. Для разных дисциплин разное количество - от 30 до 60-ти. Их надо разделить пополам и соединить потом через один, то есть, при 60-ти вопросах нужно их объединить так: 1й и 31й, 2й и 32й... 30й и 60й. Просто вырезать и вставлять или копировать и вставлять - путаница, смещается нумерация, забываешь, какие вставила, какие нет. Можно как-то решить эту проблему?
Можно воспользоваться следующим макросом для разбиения списка на две части. Он нормально работает и с круглыми цифрами (50, 60) и четными некруглыми (52, 64). Для нечетных он оставляет в самом конце один повторный номер/вопрос.
Выделите ваш список и примените макрос:
Sub listM2() 'для четных чисел с разбиением на 2 части Dim arr() As String Dim arrF() As String Dim arrS() As String Dim rng As Range Dim i As Long Set rng = Selection.Range rng.ListFormat.ConvertNumbersToText arr = Split(rng, Chr(13)) For i = 0 To UBound(arr) / 2 Selection.TypeText arr(i) & vbCrLf Selection.TypeText arr(i + (UBound(arr) / 2) - 1) & vbCrLf & vbCrLf Next i End Sub
Для разбиения списка на три части используйте следующий макрос:
Sub listM3() 'для разбиения на три части. Dim arr() As String Dim arrF() As String Dim arrS() As String Dim rng As Range Dim i As Long Set rng = Selection.Range rng.ListFormat.ConvertNumbersToText arr = Split(rng, Chr(13)) For i = 0 To UBound(arr) / 3 Selection.TypeText arr(i) & vbCrLf Selection.TypeText arr(i + UBound(arr) / 3) & vbCrLf Selection.TypeText arr(i + 2 * UBound(arr) / 3) & vbCrLf & vbCrLf Next i End Sub
Рубрика: Вопрос-Ответ, Макросы, Стили и форматирование
Метки: макросы | нумерация | списки | форматирование
Просмотров: 14807
Подписаться на комментарии по RSS
Версия для печати
Метки: макросы | нумерация | списки | форматирование
Просмотров: 14807
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Автоформат документов
- Белый текст на синем фоне в Word 2007
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое удаление границ у таблицы
- Быстрый ввод текста с помощью команды =rand()
Комментариев: 12
Антон, как всегда блестяще. Нет слов. Только жаль, что список теряется.
Думаю Галине будет интересен такой вариант макроса для сортировки. Список не теряется. Сортирует как четное так и нечетное количество пунктов. После нескольких сортировок, примененных к одному и тому же списку, он очень хорошо перемешивается. Интересно, а в исходное состояние восстановится? Надо подумать. И за сколько сортировок?
Александр, спасибо за помощь.
Александр, спасибо большое, постоянно пользуюсь макросами Антона, - делаю экзаменационные билеты из вопросов, макеты учебников; и перемешивание оч кстати. Макросов нужных в моем Normal - уже не один десяток, как же это удобно! спасибо-спасибо-спасибо.
Попробовал. Список из 15 элементов вернулся в исходное состояние за 13 попыток. Вот код:
Преобразовать текст в таблицу из одного столбца.
Вторую половину таблицы перетащить выше для создания второго столбца.
Преобразовать таблицу в текст с разделителм «Знак абзаца».
Немного сложнее только выделить половину таблицы, если нет нумерации. Но можно временно её включить для выделенного текста, а после преобразования снять.
Это еще можно сделать, если нужно преобразовать один список. А когда таких документов 5, 10, 50? Эти действия Галина и делала, но это занимало массу времени и сил.
вопрос Александру.
здравствуйте, создала новый модуль, скопировала макрос - комментарии с апострофом, зеленые, а вот эти две строки - красные:
не знаю, что в них надо исправить.
помогите, пожалуйста.
после .Paragraphs.Count \ 2 в первой строке и после If ListItem(i) во второй строке должен стоять знак равно. Он почему-то теряется при вставке в сообщение.
Кстати, этот макрос работает довольно не стабильно. Максимум у меня получилось вернуть в исходное состояние 80 пунктов за 387 попыток, а больше почему-то выдает ошибку среди процесса. Но для одного-двух раз перемещивания — подойдет.
спасибо.
Здравствуйте,Антон!
Извините, не нашел на Вашем сайте точки входа для задания нового вопроса, поэтому приклеился к обсуждению имеющегося. Вопрос такой: в документе Word есть растровый рисунок и текст, обрамленные для ясности разделителями, например, знаком "#". Нет ли возможности эти элементы как-то вычленить и выложить раздельно на форму VBA или VB?
Точки входа для задания вопроса нет, потому что очень много вопросов, и Антон один не справляется. Частые посетители форума помогают по мере возможности.
По сути вопроса. Конечно. Пишите на viter.alex «собака» gmail точка com. Желательно с файлом примера исходного содержимого.