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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2023, 01:35   #1
Владомир
Новичок
Джуниор
 
Регистрация: 24.11.2015
Сообщений: 1
По умолчанию Не получается объединить ячейки таблицы одного столбца

Добрый вечер. Бьюсь уже очень долго и ничего пока не выходит. Помогите, пожалуйста, исправить макрос для MS Word 2010 чтобы он мог объединять ячейки по первому столбцу. Алгоритм такой: В таблице в первом столбце есть несколько заполненных ячеек, а за ними пустые ячейки (количество всегда разное). Необходимо объединить каждую заполненную ячейку в столбце с пустыми ячейками следующими за ней. И так далее. Но нужно оставить без объединения ячейки заполненные. Пример файла прилагаю.
Пока получилось объединить первую заполненную ячейку с ячейками пустыми, которые идут за заполненной. Однако при дальнейшем выполнении цикла выскакивает ошибка, что такого семейства не существует. Понимаю, что дело в условии, но не могу его сделать правильным. Пример макроса нашел в сети, а исправит не хватает знаний. Помогите!
Вот макрос
Код:
Sub MergeRowsByColumns()
  Dim oTbl As Table, iStart As Long, iEnd As Long, i#, j#, k#, iRowsCnt
  Set oTbl = Selection.Tables(1)
  iRowsCnt = oTbl.Rows.Count
  Application.ScreenUpdating = False  
  Do: i = i + 1
    'Ищем пустую ячейку в первом столбце. Запоминаем номер предыдущей строки    
    If Len(oTbl.Cell(i + 1, 1).Range.Text) <= 2 Then
    
      iStart = oTbl.Cell(i, 1).RowIndex
      'Начиная с этой строки ищем заполненную ячейку в первом столбце и также запоминаем номер _
      предыдущей строки
      For j = iStart + 1 To iRowsCnt
        If Len(oTbl.Cell(j, 1).Range.Text) > 2 Or j = iRowsCnt Then
          iEnd = IIf(j = iRowsCnt, j, oTbl.Cell(j, 1).Previous.RowIndex)
          
          
            'Объединяем все строки по столбцу
            ActiveDocument.Range(oTbl.Cell(iStart, k).Range.Start, oTbl.Cell(iEnd, k).Range.End).Select
            Selection.Cells.Merge
            
            'Заменяем знак абзаца на пробел
            Selection.Find.Execute findtext:="^0013", replacewith:="^0032", Replace:=wdReplaceAll          
          
          'пересчитываем количество строк после объединения
          iRowsCnt = iRowsCnt - (iEnd - iStart)         
          Exit For
        End If
      Next j
    End If
  Loop While i <> iRowsCnt
  Application.ScreenUpdating = True
End Sub
Вложения
Тип файла: docx ПК.docx (18.9 Кб, 1 просмотров)
Владомир вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выделить нужные ячейки одного столбца по четырем условиям solnce60 Microsoft Office Excel 3 19.12.2017 04:22
[РЕШЕНО][SQL]: В ячейки первого столбца, в которых содержится нуль, перенести значение из ячейки второго столбца, увеличив перенесённое значение на 7 процентов Tagir93 SQL, базы данных 5 07.02.2017 18:18
Как удалить значения одного столбца в другом, не получается Limyh Microsoft Office Excel 1 06.12.2015 16:56
Объединение строк таблицы WORD в пределах одного столбца uncontented Microsoft Office Word 3 13.05.2014 23:22
не получается просуммировать ячейки одного цвета Pakostik Помощь студентам 2 30.09.2010 22:07