Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
17th
Июл
Удаление пустых столбцов в таблице
Posted by Chas under Basic
Скрипт
Код работает, если нет объединённых ячеек в таблице.
Код работает с таблицей, в которой находится курсор.
Для ускорения работы кода можно попробовать перейти в режим «Черновик» (Word 2010) и отключить проверку правописания.
Sub Procedure_1()
'1. Помещаем в константу "myHeader" фрагмент заголовка
'столбцов, которые нас интересуют.
Const myHeader As String = "Семестр"
Dim myTable As Word.Table
Dim myLen As Long
Dim i As Long, j As Long
'2. Даём таблице, в которой находится курсор, VBA-имя "myTable".
'Через это имя будем обращаться к этой таблице. Так удобнее писать код.
Set myTable = Selection.Tables(1)
'3. Берём в переменную "myLen" количество символов,
'которое во фрагменте заголовка, чтобы каждый раз
'не вызывать функцию "Len" (может это ускорит работу кода).
myLen = Len(myHeader)
'В цикле с "i" двигаемся по ячейкам первой строки таблицы.
'Когда что-то удаляем, то удобнее писать код, если
'двигаться с конца в начало, т.к. порядковые номера
'элементов меняются.
For i = myTable.Columns.Count To 1 Step -1
'Если в ячейке в начале ячейки есть слово "Семестр",
'то анализируем остальные ячейки столбца.
If Left(myTable.Cell(1, i).Range.Text, myLen) = myHeader Then
'В цикле с "j" двигаемся по ячейкам столбца.
For j = 2 To myTable.Rows.Count Step 1
'В каждой Word-ячейке есть всегда два символа:
'1) символ "Конец ячейки" (его видно, если включен
'режим отображения непечатаемых символов (он круглый));
'2) символ, которого вообще не видно никогда.
'Characters учитывает символ "Конец ячейки".
'Если в ячейке больше одного символа, значит ячейка не пустая.
If myTable.Cell(j, i).Range.Characters.Count > 1 Then
'Переходим к следующему столбцу.
GoTo metka
End If
Next j
'Если код дошёл до сюда, значит все ячейки
'в столбце просмотрены и все ячейки пустые.
'Удаляем столбец.
myTable.Columns(i).Delete
End If
metka:
Next i
End Sub
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)