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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2012, 15:56   #1
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию Добавить строку в таблицу с объединенными ячейками

Всем доброго. Есть таблица, в которой шапка содержит объединенные ячейки.
Задача: Добавлять в цикле в таблицу строки и заполнять их ячейки данными.
Делаю такие манипуляции:
Код:
Private Sub AddRow(t As Table)
 Dim r As Row
 Set r = t.Rows.Add
 
 If Not r Is Nothing Then
  For i = 0 To adorec.Fields.Count - 1
   s = adorec.Fields(i).Value
   r.Cells(i + 1).Range.Text = s
  Next i
 End If
End Sub
Где t - передаваемая таблица как ThisDocument.Tables(1)
adorec - источник данных.

Проблема в том что переменная r принимает значение Nothing после t.Rows.Add
Самое непонятное для меня то что строки добавляются. Но обратится к ним я почему-то не могу.
Подскажите как решать такую проблему и почему она происходит?

P.S. Текст ошибки:
Цитата:
Отсутствует доступ к отдельным строкам, поскольку таблица имеет ячейки, объединенные по вертикали
I'm learning to live...

Последний раз редактировалось Stilet; 02.08.2012 в 15:58.
Stilet вне форума Ответить с цитированием
Старый 02.08.2012, 17:05   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Если в таблице есть объединенные ячейки по вертикали, то строки как бы не существуют, т.к. в одной и той же строке ячейки имеют разный номер строки.
Аналогично, если в таблице есть объединенные ячейки по горизонтали, то столбцы как бы не существуют, т.к. в одном и том же столбце ячейки имеют разный номер столбца.
Если ячейки объединены только по вертикали, можно сделать так:

Код:
Private Sub AddRow(t As Table)
 Dim i&, s$, c As Cell
 t.Rows.Add
 With t.Columns(1)
    Set c = .Cells(.Cells.Count) 'последняя ячейка первого столбца
 End With
  For i = 0 To adorec.Fields.Count - 1
   s = adorec.Fields(i).Value
   c.Range.Text = s
   Set c = c.Next 'след. ячейка в строке
  Next i
 End Sub
Если есть объединение и по горизонтали, и по вертикали, то так можно получить последнюю ячейку в таблице
Код:
Set c = t.Range.Cells(t.Range.Cells.Count)
и плясать от нее.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 02.08.2012 в 17:13.
Казанский вне форума Ответить с цитированием
Старый 02.08.2012, 17:07   #3
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,034
По умолчанию

ну так и файл где пробуете и как начинаете код исполнять
Ципихович Эндрю вне форума Ответить с цитированием
Старый 03.08.2012, 13:09   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Казанский
Идею понял, спасибо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти запись и добавить в таблицу StudUL C++ Builder 21 17.05.2012 14:35
Добавить данные в таблицу Access ара Помощь студентам 19 14.05.2011 18:09
Как сделать таблицу (в Delphi) с редактируемыми ячейками duhduhduh Компоненты Delphi 2 14.07.2010 13:55
Работа с объединенными ячейками tae1980 Microsoft Office Excel 6 13.02.2009 22:25
Добавить таблицу в MS ACCESS Seqular БД в Delphi 5 21.02.2007 02:14