Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/49: Рейтинг темы: голосов - 49, средняя оценка - 4.94
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102

Вставить несвязанные столбцы/строки в таблице MS Word

16.05.2011, 13:11. Показов 9518. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
имеется таблица, в которой выделены несвязанные столбцы/строки:

|__|xx|__|__|xx|__|__|xx|__|
|__|xx|__|__|xx|__|__|xx|__|
|__|xx|__|__|xx|__|__|xx|__|
|__|xx|__|__|xx|__|__|xx|__|
|__|xx|__|__|xx|__|__|xx|__|
|__|xx|__|__|xx|__|__|xx|__|
|__|xx|__|__|xx|__|__|xx|__|
|__|xx|__|__|xx|__|__|xx|__|

как одномоментно вставить столбцы/строки, скажем, справа/слева (для строк - сверху/снизу соответственно) от выделенных:

|__|xx|xx|__|__|xx|xx|__|__|xx|xx|__|
|__|xx|xx|__|__|xx|xx|__|__|xx|xx|__|
|__|xx|xx|__|__|xx|xx|__|__|xx|xx|__|
|__|xx|xx|__|__|xx|xx|__|__|xx|xx|__|
|__|xx|xx|__|__|xx|xx|__|__|xx|xx|__|
|__|xx|xx|__|__|xx|xx|__|__|xx|xx|__|
|__|xx|xx|__|__|xx|xx|__|__|xx|xx|__|
|__|xx|xx|__|__|xx|xx|__|__|xx|xx|__|

?
PS: а как быть, если выделено несколько столбцов одновременно, например, так:

|__|xx|__|__|xx|xx|__|__|xx|xx|xx|__|
|__|xx|__|__|xx|xx|__|__|xx|xx|xx|__|
|__|xx|__|__|xx|xx|__|__|xx|xx|xx|__|
|__|xx|__|__|xx|xx|__|__|xx|xx|xx|__|
|__|xx|__|__|xx|xx|__|__|xx|xx|xx|__|
|__|xx|__|__|xx|xx|__|__|xx|xx|xx|__|
|__|xx|__|__|xx|xx|__|__|xx|xx|xx|__|
|__|xx|__|__|xx|xx|__|__|xx|xx|xx|__|

чтобы получилось так:

|__|xx|xx|__|__|xx|xx|xx|xx|__|__|xx|xx| xx|xx|xx|xx|__|
|__|xx|xx|__|__|xx|xx|xx|xx|__|__|xx|xx| xx|xx|xx|xx|__|
|__|xx|xx|__|__|xx|xx|xx|xx|__|__|xx|xx| xx|xx|xx|xx|__|
|__|xx|xx|__|__|xx|xx|xx|xx|__|__|xx|xx| xx|xx|xx|xx|__|
|__|xx|xx|__|__|xx|xx|xx|xx|__|__|xx|xx| xx|xx|xx|xx|__|
|__|xx|xx|__|__|xx|xx|xx|xx|__|__|xx|xx| xx|xx|xx|xx|__|
|__|xx|xx|__|__|xx|xx|xx|xx|__|__|xx|xx| xx|xx|xx|xx|__|
|__|xx|xx|__|__|xx|xx|xx|xx|__|__|xx|xx| xx|xx|xx|xx|__|

?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2011, 13:11
Ответы с готовыми решениями:

строки и столбцы в таблице
создать веб-страницу,содержащую таблицу 3 строк и 5 столбцов.обьединить 2,3,4,5 столбцы в первой строке и закрасить в желтый цвет.

Строки и столбцы в таблице
Прошу прощения, исходя из скриншота там дата снятия колонка "N" и срок исполнения колонка "P". Статус "просрочен"...

Найти одинаковые строки и вставить в следующие столбцы значения
Добрый день. Есть 2 таблицы на разных листах. Таблица 1 имеет столбцы от А до Z Таблица 2 имеет только столбец А. Таблица 2 это...

40
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
23.06.2011, 02:18  [ТС]
Студворк — интернет-сервис помощи студентам
вот окончательный код, теперь можно выделять не только первые ячейки в столбцах или целые столбцы, но и любые одиночные ячейки ячейки:
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
47
48
49
50
51
Sub A_ВСТАВИТЬ_НЕСВЯЗАННЫЕ_СТОЛБЦЫ_СПРАВА ()
Application.ScreenUpdating = False 'СНЯТЬ МЕРЦАНИЕ ЭКРАНА
Selection.Font.Animation = wdAnimationBlinkingBackground 'В ВЫДЕЛЕННЫХ ЯЧЕЙКАХ СДЕЛАТЬ ЦВЕТ АНИМИРОВАННЫМ
    Dim STR As Word.Row
For Each STR In Selection.Tables(1).Rows
    STR.Range.Characters.Last.Font.Animation = wdAnimationNone 'ЕСЛИ ЗНАК КОНЦА СТРОКИ АНИМИРОВАННЫЙ - СДЕЛАТЬ АВТО, ИНАЧЕ - БЕСКОНЕЧНАЯ ВСТАВКА СТОЛБЦОВ!
Next STR
Dim ColCount As Integer, RowCount As Integer
Dim X As Integer, Y As Integer, Z As Integer
Dim NUM() As Integer
ColCount = Selection.Tables(1).Columns.Count
RowCount = Selection.Tables(1).Rows.Count
With Selection.Tables(1)
    'Идём от последнего столбца к первому и просматриваем каждую ячейку в столбце.
    For X = ColCount To 1 Step -1
     For Z = 1 To RowCount Step 1
        If .Columns(X).Cells(Z).Range.Font.Animation = wdAnimationBlinkingBackground Then
            Y = Y + 1
            'число столбцов, содержащих анимацию, будем помещать в массив
            '(просто мне так проще).
            ReDim Preserve NUM(1 To Y)
            NUM(Y) = X
            If X = 1 Then
                ActiveDocument.Range(Start:=.Cell(Z, NUM(UBound(NUM))).Range.Start, _
                    End:=.Cell(Z, NUM(LBound(NUM))).Range.End).Select
                Selection.SelectColumn
                Selection.Font.Animation = wdAnimationNone
                Selection.InsertColumnsRight
                Selection.Columns.Shading.BackgroundPatternColor = wdColorLightTurquoise
                'Очистка массива.
                Erase NUM()
                Y = 0
            ElseIf .Columns(X - 1).Cells(Z).Range.Font.Animation = wdAnimationNone Then
                ActiveDocument.Range(Start:=.Cell(Z, NUM(UBound(NUM))).Range.Start, _
                    End:=.Cell(Z, NUM(LBound(NUM))).Range.End).Select
                Selection.SelectColumn
                Selection.Font.Animation = wdAnimationNone
                Selection.InsertColumnsRight
                Selection.Columns.Shading.BackgroundPatternColor = wdColorLightTurquoise
                'Очистка массива.
                Erase NUM()
                Y = 0
            End If
        End If
      Next Z
    Next X
End With
    Selection.HomeKey Unit:=wdRow
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
Application.ScreenUpdating = True
End Sub
Добавлено через 27 минут
хм, если не выделена ни одна ячейка а просто курсор стоит в пустой таблице - работает, если же в ячейке, где стоит курсор есть текст - глючит, в чем же дело?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
23.06.2011, 08:52
diletant2,
а как может такая ситуация возникнуть:
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|xx|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|xx|xx|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|xx|xx|xx|__|
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|__|__|__|__|

Речь шла о вставке столбцов справа от выделенных столбцов. Или ещё имеется какое-то условие?
0
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
23.06.2011, 09:29  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
diletant2,
а как может такая ситуация возникнуть:
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|xx|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|xx|xx|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|xx|xx|xx|__|
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|__|__|__|__|

Речь шла о вставке столбцов справа от выделенных столбцов. Или ещё имеется какое-то условие?

|__|__|__|__|__|__|__|__|__|__|__|__|
|__|xx|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|xx|xx|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|xx|xx|xx|__|
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|__|__|__|__|
|__|__|__|__|__|__|__|__|__|__|__|__|

ну, так для удобства токмо: представьте себе, что Вы в конце очень-очень длинной таблицы и надо скролить, чтобы подняться в ее начало и выделить столбцы! с другой стороны, выделив ячейки щахматкой - получим вставку столбцов через один:

|xx|__|__|__|__|__|__|__|__|__|__|__|
|__|xx|__|__|__|__|__|__|__|__|__|__|
|__|__|xx|__|__|__|__|__|__|__|__|__|
|__|__|__|xx|__|__|__|__|__|__|__|__|


|xx|xx|__|xx|__|xx|__|xx|__|__|__|__|
|__|xx|xx|xx|__|xx|__|xx|__|__|__|__|
|__|xx|__|xx|xx|xx|__|xx|__|__|__|__|
|__|xx|__|xx|__|xx|xx|xx|__|__|__|__|
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
23.06.2011, 12:19
diletant2,
вместо имён переменных X, Y - всегда сначала используйте i, j - это неформальное правило принято на форумах, в литературе и институтах - так проще будет ориентироваться.

Main:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'Всегда используйте Option Explicit.
'Он помогает избежать ошибки с именами переменных.
Option Explicit
Sub Main()
'Т.к. получается обработка в 2 этапа
'(1 этап - это выделение анимацией ячеек в первой строке;
'2 этап - вставка столбцов), то разобьём процедуру на 3 процедуры:
'Main - из неё будут остальные процедуры запускаться;
'P1 и P2.
'Проверка, что курсор находится в таблице, чтобы чего-нибудь не натворить.
If Selection.Information(wdWithInTable) = False Then
    MsgBox "Вставьте курсор в таблицу", vbCritical
    Exit Sub
End If
'Выделение анимацией ячеек в первой строке.
Call P1
'Вставка столбцов.
Call P2
MsgBox "Работа завершена"
End Sub

P1:
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
Sub P1()
'Выделение анимацией ячеек в первой строке.
Dim i As Integer
'Просматривать все ячейки в таблице - это растраты. Надо всегда
'сначала использовать поиск. Если поиск не помогает, тогда да, надо
'просматривать все ячейки.
'Помечаем выделенные ячейки анимацией.
Selection.Font.Animation = wdAnimationBlinkingBackground
'Теперь выделяем анимацией ячейки в первой строке в столбцах, в которых есть анимированные ячейки.
For i = 1 To Selection.Tables(1).Columns.Count Step 1
    Selection.Tables(1).Columns(i).Select
    With Selection.Range.Find
        .Format = True
        .Font.Animation = wdAnimationBlinkingBackground
        .Execute
        If .Found = True Then
            'Убираем анимацию у найденного (чтобы меньше было анимации
            'может это уменьшит что-то где-то, если таблицы большие).
            Selection.Font.Animation = wdAnimationNone
            'Делаем анимацию у первой ячейки в столбце, где была найдена анимация.
            Selection.Tables(1).Columns(i).Cells(1).Range.Font.Animation = wdAnimationBlinkingBackground
        End If
    End With
Next i
End Sub

P2:
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
Sub P2()
'Вставка столбцов.
Dim КолСтолбцов As Integer
Dim i As Integer, j As Integer
Dim Номера() As Integer
КолСтолбцов = Selection.Tables(1).Columns.Count
With Selection.Tables(1)
    'Идём от последнего столбца к первому и просматриваем первую ячейку в столбце.
    For i = КолСтолбцов To 1 Step -1
        If .Columns(i).Cells(1).Range.Font.Animation = wdAnimationBlinkingBackground Then
            j = j + 1
            'Номера столбцов, содержащих анимацию, будем помещать в массив
            '(просто мне так проще).
            ReDim Preserve Номера(1 To j)
            Номера(j) = i
            If i = 1 Then
                ActiveDocument.Range(Start:=.Cell(1, Номера(UBound(Номера))).Range.Start, _
                    End:=.Cell(1, Номера(LBound(Номера))).Range.End).Select
                Selection.SelectColumn
                Selection.Font.Animation = wdAnimationNone
                Selection.InsertColumnsRight
                'Очистка массива.
                Erase Номера()
                j = 0
            ElseIf .Columns(i - 1).Cells(1).Range.Font.Animation = wdAnimationNone Then
                ActiveDocument.Range(Start:=.Cell(1, Номера(UBound(Номера))).Range.Start, _
                    End:=.Cell(1, Номера(LBound(Номера))).Range.End).Select
                Selection.SelectColumn
                Selection.Font.Animation = wdAnimationNone
                Selection.InsertColumnsRight
                Erase Номера()
                j = 0
            End If
        End If
    Next i
End With
End Sub
1
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
23.06.2011, 21:59  [ТС]
спасибо, Busine2009!
но есть 2 "но":
1. Вы дважды объявляете переменную i, что вызывает ошибку (это, кстати, и побудило меня их переименовать, чтобы не путаться... )
2. Вы почему-то невнимательно читаете мои посты: Ваш код, со сведением всех выделений к ячейкам 1-й строки, не сможет вставить столбцы, скажем, через один, как на картинке ниже:

Цитата Сообщение от diletant2 Посмотреть сообщение
выделив ячейки щахматкой - получим вставку столбцов через один:

|xx|__|__|__|__|__|__|__|__|__|__|__|
|__|xx|__|__|__|__|__|__|__|__|__|__|
|__|__|xx|__|__|__|__|__|__|__|__|__|
|__|__|__|xx|__|__|__|__|__|__|__|__|

|xx|xx|__|xx|__|xx|__|xx|__|__|__|__|
|__|xx|xx|xx|__|xx|__|xx|__|__|__|__|
|__|xx|__|xx|xx|xx|__|xx|__|__|__|__|
|__|xx|__|xx|__|xx|xx|xx|__|__|__|__|
просто тупо вставит все целым блоком:

|xx|__|__|__|xx|xx|xx|xx|__|__|__|__|
|__|xx|__|__|xx|xx|xx|xx|__|__|__|__|
|__|__|xx|__|xx|xx|xx|xx|__|__|__|__|
|__|__|__|xx|xx|xx|xx|xx|__|__|__|__|

а оно нам надо?

но все-равно, огромное спасибо Вам за код!
не могли бы Вы еще дать более подробные комментарии, в частности по:

Dim КолСтолбцов As Integer
Dim i As Integer, j As Integer
Dim Номера() As Integer
...
If .Columns(i).Cells(1).Range.Font.Animatio n = wdAnimationBlinkingBackground Then
j = j + 1
'Номера столбцов, содержащих анимацию, будем помещать в массив
'(просто мне так проще).
ReDim Preserve Номера(1 To j)
Номера(j) = i
If i = 1 Then
ActiveDocument.Range(Start:=.Cell(1, Номера(UBound(Номера))).Range.Start, _
End:=.Cell(1, Номера(LBound(Номера))).Range.End).Select
Selection.SelectColumn
Selection.Font.Animation = wdAnimationNone
Selection.InsertColumnsRight
'Очистка массива.
Erase Номера()
j = 0
ElseIf .Columns(i - 1).Cells(1).Range.Font.Animation = wdAnimationNone Then
ActiveDocument.Range(Start:=.Cell(1, Номера(UBound(Номера))).Range.Start, _
End:=.Cell(1, Номера(LBound(Номера))).Range.End).Selec t
Selection.SelectColumn
Selection.Font.Animation = wdAnimationNone
Selection.InsertColumnsRight
Erase Номера()
j = 0
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
23.06.2011, 22:47
Цитата Сообщение от diletant2 Посмотреть сообщение
Вы дважды объявляете переменную i, что вызывает ошибку
где я дважды её объявляю? Я тестировал код, у меня не было ошибки.

Т.е. вам не надо вставлять справа столбцы, как это делает Word, когда выделено несколько столбцов? Всегда надо вставлять только один столбец?
0
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
23.06.2011, 22:52  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
вам не надо вставлять справа столбцы, как это делает Word, когда выделено несколько столбцов?
как раз надо! но еще раз посмотрите на картинку: вариант с шахматкой - более гибкий!
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
23.06.2011, 22:56
diletant2,
т.е. есть 2 варианта:
  1. если выделены 2 смежные ячейки в одной строке, то вставляем справа два столбца (как Word делает);
  2. если выделены 2 ячейки в разных строках, то вставляются столбцы справа от каждой ячейки.
0
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
23.06.2011, 23:00  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
если выделены 2 ячейки в разных строках, то вставляются столбцы справа от каждой ячейки.
да, все совершенно верно! так гибче?

более подробный комментарий к коду можно?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
23.06.2011, 23:03
Цитата Сообщение от diletant2 Посмотреть сообщение
так гибче?
при чём здесь "гибкость" - важен же результат.
0
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
23.06.2011, 23:07  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
важен же результа
ОК, Вам-то что самому больше нравится/надо?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
23.06.2011, 23:15
Может я чего-то не понимаю, но это

|xx|xx|__|xx|__|xx|__|xx|__|__|__|__|
|__|xx|xx|xx|__|xx|__|xx|__|__|__|__|
|__|xx|__|xx|xx|xx|__|xx|__|__|__|__|
|__|xx|__|xx|__|xx|xx|xx|__|__|__|__|

и это

|xx|__|__|__|xx|xx|xx|xx|__|__|__|__|
|__|xx|__|__|xx|xx|xx|xx|__|__|__|__|
|__|__|xx|__|xx|xx|xx|xx|__|__|__|__|
|__|__|__|xx|xx|xx|xx|xx|__|__|__|__|

вообще-то дают разный результат. Это не альтернативы.
0
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
23.06.2011, 23:28  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
Может я чего-то не понимаю
|xx|xx|__|xx|__|xx|__|xx|__|__|__|__|
|__|xx|xx|xx|__|xx|__|xx|__|__|__|__|
|__|xx|__|xx|xx|xx|__|xx|__|__|__|__|
|__|xx|__|xx|__|xx|xx|xx|__|__|__|__|

этот вариант получается при переборе всех ячеек

|xx|__|__|__|xx|xx|xx|xx|__|__|__|__|
|__|xx|__|__|xx|xx|xx|xx|__|__|__|__|
|__|__|xx|__|xx|xx|xx|xx|__|__|__|__|
|__|__|__|xx|xx|xx|xx|xx|__|__|__|__|

а этот - при переборе ячеек только в первой строке

если мы хотим получить такой же вариант при переборе всех ячеек, то выделяем так (т.е. в одной строке подряд):

|__|__|__|__|xx|xx|xx|xx|__|__|__|__|
|xx|xx|xx|xx|xx|xx|xx|xx|__|__|__|__|
|__|__|__|__|xx|xx|xx|xx|__|__|__|__|
|__|__|__|__|xx|xx|xx|xx|__|__|__|__|

т.е. результат - зависит от способа выделения!

в вашем же варианте перебора ячеек только в первой строке такого результата вообще получить невозможно:

|xx|xx|__|xx|__|xx|__|xx|__|__|__|__|
|__|xx|xx|xx|__|xx|__|xx|__|__|__|__|
|__|xx|__|xx|xx|xx|__|xx|__|__|__|__|
|__|xx|__|xx|__|xx|xx|xx|__|__|__|__|
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
23.06.2011, 23:30
diletant2,
а при чём гибкость то?

Когда надо 2 условия отслеживать.
0
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
23.06.2011, 23:36  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
при чём гибкость то?
гибкость - в результате!
в коде м.б. слоновость - зато в результате змейка! ))
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
23.06.2011, 23:38
diletant2,
понятно, я только сейчас узнал, что там разные ситуации у вас. Завтра комментарии вставлю.
0
735 / 203 / 11
Регистрация: 23.06.2011
Сообщений: 440
23.06.2011, 23:49
Извините, плохо прочитал тему. В Word, увы, не могу помочь.
0
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
24.06.2011, 00:04  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
Завтра комментарии вставлю
спасибо, ждем-с!
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
24.06.2011, 07:35
Комментарии к коду:
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
47
48
Sub P1()
Dim КолСтолбцов As Integer
Dim i As Integer, j As Integer
'Создание в оперативной памяти поименованной области - массива Номера.
'Массив - это переменная, состоящая из одной или несколько переменных.
'Если в скобках ничего не указано (Номера()), то количество переменных
'можно изменять в массиве во время выполнения процедуры.
Dim Номера() As Integer
...
If .Columns(i).Cells(1).Range.Font.Animation = wdAnimationBlinkingBackground Then
j = j + 1
'Номера столбцов, содержащих анимацию, будем помещать в массив
'(просто мне так проще).
'Чтобы начать работать с массивом, надо указать, сколько в нём элементов.
'С помощью ReDim указываем, сколько в массиве будет элементов.
'Если j = 1, то в массиве будет 1 элемент, если j = 2, то 2 элемента и т.д.
'Preserve - сохраняет данные в прежних элементах при изменении размера массива
'(размер массива - это количество элементов в массиве).
ReDim Preserve Номера(1 To j)
'Помещение в элемент массива данных.
Номера(j) = i
If i = 1 Then
'UBound(Номера) - это количество элементов в массиве.
'Номера(UBound(Номера)) - это данные, содержащие в последнем элементе массива.
'.Cell(1, Номера(UBound(Номера))).Range - это диапазон в документе,
'занимаемой ячейкой.
'.Range.Start - это положение первого символа в ячейке таблицы.
'LBound(Номера) - это порядковый номер первого элемента массива
'(по умолчанию он равен нулю, но я сделал порядковый номер
'первого элемента массива равным один Номера(1 To j).
ActiveDocument.Range(Start:=.Cell(1, Номера(UBound(Номера))).Range.Start, _
End:=.Cell(1, Номера(LBound(Номера))).Range.End).Select
Selection.SelectColumn
Selection.Font.Animation = wdAnimationNone
Selection.InsertColumnsRight
'Очистка массива.
Erase Номера()
j = 0
'Если в предыдущем столбце нет анимации, то
ElseIf .Columns(i - 1).Cells(1).Range.Font.Animation = wdAnimationNone Then
ActiveDocument.Range(Start:=.Cell(1, Номера(UBound(Номера))).Range.Start, _
End:=.Cell(1, Номера(LBound(Номера))).Range.End).Select
Selection.SelectColumn
Selection.Font.Animation = wdAnimationNone
Selection.InsertColumnsRight
Erase Номера()
j = 0
End Sub
1
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
24.06.2011, 13:12  [ТС]
Busine2009, спасибо за разъяснения! нет пока фундаментальных знаний по VBA, будем разбираться (на примерах)...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.06.2011, 13:12

Word: Создание итоговой строки в таблице
Добрый день! Передо мной стоит задача заполнить таблицу данными в Word с результатом. задачу заполнения таблицы я решил, а вот как сделать...

Выделить знак строки в таблице MS Word
как программно выделить знак строки в таблице и как заменить его цвет на авто, не затронув цвет текста в ячейках? |__|__|__|__|о ...

Повторять строки заголовка в таблице Word
Здравствуйте! В программе происходит формирование и заполнение таблицы. У таблицы есть шапка с наименованием колонок. Тут вот появилась...

Выделить чётные строки в пронумерованной таблице в Word
Помогите, пожалуйста, написать макрос, который бы выделял чётные строки в пронумерованной таблице в ворде. Добавлено через 16 минут ...

Вставить ячейки из StringGrid в выборочные строки в Word
Помогите пожалуйста, мне надо выборочно ячейки из StringGrid вставить в выборочные строки в Word. Например, мне надо ячейку с индексами...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru