С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/92: Рейтинг темы: голосов - 92, средняя оценка - 4.54
6 / 5 / 2
Регистрация: 04.01.2013
Сообщений: 56
1

Word: объединение ячеек таблицы

27.01.2013, 14:44. Показов 18157. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С помощью макроса добавляю таблицу в TextBox на страницу.
Дальше пытаюсь объединить ячейки.
В столбцах отличных от первого ячейки объединяются. В первом столбце появляется ошибка "Запрашиваемый номер семейства не существует"

Макрос
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Sub Макрос11()
'
' Макрос11 Макрос
'
'
     ' Shape
     Dim shp As Shape
     ' Добавляем текстовое поле
     Set shp = ActiveDocument.Shapes.AddShape(1, _
                                    MillimetersToPoints(20), _
                                    MillimetersToPoints(25), _
                                    MillimetersToPoints(100), _
                                    MillimetersToPoints(45))
     
    ' Таблица
    Dim tbl As Table
    Dim rng As Range
    
    ' Range тектосвого поля
    Set rng = shp.TextFrame.TextRange
    ' Добавляем таблицу
    Set tbl = ActiveDocument.Tables.Add(Range:=rng, _
                                        NumRows:=4, _
                                        NumColumns:=8)
    ' Range для ячеек таблицы
    Dim rngTbl As Range
    
    ' Выделяем. Объединяем
    ' 4 столбец. 2+3 ячейки
    Set rngTbl = tbl.Cell(2, 4).Range
    rngTbl.End = tbl.Cell(3, 4).Range.End
    rngTbl.Cells.Merge
    ' 3 столбец. 2+3 ячейки
    Set rngTbl = tbl.Cell(2, 3).Range
    rngTbl.End = tbl.Cell(3, 3).Range.End
    rngTbl.Cells.Merge
    ' 2 столбец. 2+3 ячейки
    Set rngTbl = tbl.Cell(2, 2).Range
    rngTbl.End = tbl.Cell(3, 2).Range.End
    rngTbl.Cells.Merge
    ' 1 столбец. 2+3 ячейки
    Set rngTbl = tbl.Cell(2, 1).Range
    rngTbl.End = tbl.Cell(3, 1).Range.End
    rngTbl.Cells.Merge ' !!!!ОШИБКА!!!! "Run-time error 5941. Запрашиваемый номер семейства не существует"
     
End Sub
Подскажите, в чем ошибка.

Добавлено через 53 минуты
Такой вариант работает.
Выделение происходит правильно.
Только ошибка все равно непонятная.

Visual Basic
1
2
3
4
Set rngTbl = tbl.Cell(2, 1).Range
rngTbl.End = tbl.Cell(3, 1).Range.End
rngTbl.Select
Selection.Cells.Merge
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2013, 14:44
Ответы с готовыми решениями:

Объединение ячеек столбца в word
Открывается вордовский документ в котором есть таблица. Нужно объеденить 1,2,3 ячейку в 1 столбце....

Объединение более 2х ячеек в таблице Word
Добрый день. Сабж. objTable.Cell(1, 4).Merge objTable.Cell(2, 4) Работает. А возможно ли за раз...

Word -> Различный Aligment (влево-вправо) для разных колонок или ячеек(cell) Word-таблицы?
Как пограммно из VBA при формирования документа сделать различный Aligment (влево-вправо-по...

Объединение ячеек в таблице word по вертикали делает недоступным объединённую ячейку
Здарова, джентльмены. Не понял, откуда, косяк в word 2016, возможно после очередных обновлений....

2
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,518
27.01.2013, 14:50 2
hexadecimal, ваш код нелогично работает, хотя и работает.

В этом случае:
Visual Basic
1
2
    Set rngTbl = tbl.Cell(2, 4).Range
    rngTbl.End = tbl.Cell(3, 4).Range.End
диапазон "rngTbl" содержит ячейки от второй ячейки в четвёртом столбце до третьей ячейки (включительно) в чётвёртом столбце. Т.е. вы думаете, что работаете с двумя ячейками, а задействуете девять ячеек. Это можно проверить, если узнать количество ячеек с помощью команды:
Visual Basic
1
rngTbl.Cells.Count
Я не буду вникать, в чём ошибка, которая у вас появляется, а предложу свой вариант (код просто показывает принцип):
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Procedure_4()
 
    Dim myTextFrame As Word.TextFrame
    Dim myTable As Word.Table
    
    Set myTextFrame = ActiveDocument.Shapes(1).TextFrame
    
    Set myTable = myTextFrame.TextRange.Tables(1)
    
    myTable.Cell(2, 1).Merge MergeTo:=myTable.Cell(3, 1)
    
End Sub



Примечание

В некоторых случаях, когда в таблице есть объединённые ячейки, нельзя обратиться к ячейке по номеру строки и столбца: Cell(2, 1). Нужно что-то другое придумывать.
1
6 / 5 / 2
Регистрация: 04.01.2013
Сообщений: 56
27.01.2013, 15:03  [ТС] 3
Спасибо. То, что и было нужно
0
27.01.2013, 15:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2013, 15:03
Помогаю со студенческими работами здесь

Сложение ячеек таблицы в VB Word
Это задание: На листе Word строится таблица и заполняются ячейки с исходными данными. При нажатии...

Выбор нескольких ячеек таблицы в Word
Есть таблица, в которой надо выделить (выбрать) несколько ячеек с известными 'координатами' (первая...

Копирование ячеек таблицы Word в другой документ
Доброго времени суток. Задача такова - нужно перенести содержимое нескольких ячеек таблицы...

Перенос данных из ячеек таблицы Excel в соответствующие ячейки шаблона Word
Здравствуйте !Передо мной на производственной практике поставили задачу:есть заполненная таблица...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru