С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/39: Рейтинг темы: голосов - 39, средняя оценка - 4.90
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300

Сортировка по столбцу таблицы Ворд

03.09.2011, 19:22. Показов 7708. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вся сложность в том, что имеется 6 столбцов, в 1 м номер по порядку, надо отсортировать данные 2 го столбца, но при этом все данные со строки, то есть с 3, 4, 5, 6 ячейки должны переместиться вместе с данными со 2 й ячейки. В Экселе всё просто, а как в Ворде?? Есть у кого код, спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2011, 19:22
Ответы с готовыми решениями:

Сортировка содержимого таблицы Ворд от А до Я
'сортировка выделенной таблицы активного документа от А до Я Selection.Sort ExcludeHeader:=False, FieldNumber:="столбцам 1", _ ...

Сортировка таблицы по определенному столбцу
Здравствуйте, уважаемые программисты. Подскажите, пожалуйста, как отсортировать таблицу (с помощью макроса) по определенному столбцу,...

Сортировка таблицы в Listbox по выбранному столбцу
Не получается отсортировать таблицу в Listbox по выбранному столбцу. Посмотрите, пожалуйста. Спасибо.

20
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
04.09.2011, 16:08
Думаю ничего нового не придумал, но один из способов- перенести данные в массив, отсортировать его и вернуть в таблицу.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2011, 20:05
Ципихович Эндрю,
с помощью VBA надо сортировку провести?
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
06.09.2011, 20:09  [ТС]
да, да и разницы от ВБ я не вижу
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2011, 20:11
Ципихович Эндрю,
а почему не воспользоваться пользовательским интерфейсом?
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
06.09.2011, 20:16  [ТС]
а что он даёт
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Вся сложность в том, что имеется 6 столбцов, в 1 м номер по порядку, надо отсортировать данные 2 го столбца, но при этом все данные со строки, то есть с 3, 4, 5, 6 ячейки должны переместиться вместе с данными со 2 й ячейки. В Экселе всё просто, а как в Ворде??
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2011, 20:17
Ципихович Эндрю,
сортировка есть в Word для пользователей.
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
06.09.2011, 20:31  [ТС]
ничего не понял, ну не для зверей же
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2011, 20:33
Ципихович Эндрю,
  1. курсор поставьте таблицу;
  2. Таблица - Сортировка...;
  3. выберите столбец, по которому сортировать.
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
06.09.2011, 20:39  [ТС]
и что отсортируется это столбец, а остальные на месте будут
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2011, 20:41
Ципихович Эндрю,
нет, всё остальное тоже переместится.
1
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
06.09.2011, 22:16  [ТС]
ОК, не знал, не верится, буду пробовать
Но тем не менее тогда только упрощается и эти же движения можно и кодом макроса записать??

Добавлено через 1 час 22 минуты
написал, выделяю всё кроме первой строки, натыкаюсь на ошибку 5280, не пойму почему
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
With ActiveDocument.Tables(cursor_table)
    
     Debug.Print cursor_table '5
    Debug.Print cursor_row '1
     Debug.Print cursor_column_cell '2
 
        'выделить в документе промежуток ...
        ActiveDocument.Range( _
                Start:=.Rows(cursor_row + 1).Cells(1).Range.Start, _
                End:=.Rows(.Rows.Count).Cells(.Columns.Count).Range.End).Select
 
        'оператор для отлова ошибок, указывает, что при возникновении ошибки нужно переходить к следующей строке кода
        On Error Resume Next
 
        Selection.Sort ExcludeHeader:=False, FieldNumber:="столбцам " & cursor_column_cell, _
                       SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _
                       FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
                       wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _
                       wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
                       wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _
                       LanguageID:=wdRussian, SubFieldNumber:="абзацам", SubFieldNumber2:= _
                       "абзацам", SubFieldNumber3:="абзацам"
 
        'ошибка 5280 - "Не найдены записи для сортировки"
        If Err.Number = 5280 Then
            MsgBox$ _
                    "Программа не может быть продолжена, не найдены записи для сортировки", vbOKOnly, _
                    "Внимание"
            GoTo Конец
        End If
 
        'требуется, чтобы в нужном месте отключить действие строки 1) On Error GoTo ... 2) либо действие строки On Error Resume Next
        On Error GoTo 0
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2011, 22:30
Удалил сообщение.
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
06.09.2011, 22:38  [ТС]
естественно 15-й

Добавлено через 5 минут
по ходу надо выделить начиная с 2 строки и до конца таблицы и ещё один абзац, но как это сделать я не врублюсь, имеется ввиду чтобы просто
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2011, 22:44
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
FieldNumber:="столбцам "
попробуйте здесь просто цифру написать (не используйте переменную).
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
06.09.2011, 22:48  [ТС]
от перестановки слогаемых сумма не меняется
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2011, 22:52
Ципихович Эндрю,
выделите таблицу вручную и примените код по сортировке.
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
06.09.2011, 23:01  [ТС]
неа, написал
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
  'выделить в документе промежуток ...
        ActiveDocument.Range( _
                Start:=.Rows(.Rows.Count).Cells(.Columns.Count).Range.End, _
                End:=.Rows(.Rows.Count).Cells(.Columns.Count).Range.End).Select
 
        'спуститься вниз на 1 wdLine
        Selection.MoveDown Unit:=wdLine, Count:=1
 
        'выделить в документе промежуток ...
        ActiveDocument.Range( _
                Start:=.Rows(.Rows.Count).Cells(.Columns.Count).Range.End, _
                End:=Selection.Range.End).Select
Добавлено через 6 минут
конечный код такой
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Sub Ссылка_фамилия_имя_отчество_01()
 
'расставляет номера по порядку в столбце таблицы ниже ячейки, где находится данное поле и до конца таблицы
'отключаем дёргание экрана при выполнении кода
    Application.ScreenUpdating = False
 
    Dim cursor_table As Integer
    Dim cursor_row As Integer
    Dim cursor_column_cell As Integer
 
    'выполнить функцию с именем ...
    FunctionВыясняем_нахождение_курсора_в_таблице _
            cursor_table, _
            cursor_row, _
            cursor_column_cell
 
    If cursor_table = 32767 Then
        MsgBox$ _
                "Программа не может быть продолжена, курсор должен находится в таблице", vbOKOnly, _
                "Внимание"
        GoTo Конец
    End If
 
    With ActiveDocument.Tables(cursor_table)
 
        'выделить в документе промежуток ...
        ActiveDocument.Range( _
                Start:=.Rows(.Rows.Count).Cells(.Columns.Count).Range.End, _
                End:=.Rows(.Rows.Count).Cells(.Columns.Count).Range.End).Select
 
        'спуститься вниз на 1 wdLine
        Selection.MoveDown Unit:=wdLine, Count:=1
 
        'выделить в документе промежуток ...
        ActiveDocument.Range( _
                Start:=.Rows(.Rows.Count).Cells(.Columns.Count).Range.End, _
                End:=Selection.Range.End).Select
 
        'оператор для отлова ошибок, указывает, что при возникновении ошибки нужно переходить к следующей строке кода
        On Error Resume Next
 
        Selection.Sort ExcludeHeader:=False, FieldNumber:="столбцам 2", _
                       SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _
                       FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
                       wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _
                       wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
                       wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _
                       LanguageID:=wdRussian, SubFieldNumber:="абзацам", SubFieldNumber2:= _
                       "абзацам", SubFieldNumber3:="абзацам"
 
        'ошибка 5280 - "Не найдены записи для сортировки"
        If Err.Number = 5280 Then
            MsgBox$ _
                    "Программа не может быть продолжена, не найдены записи для сортировки", vbOKOnly, _
                    "Внимание"
            GoTo Конец
        End If
 
        'требуется, чтобы в нужном месте отключить действие строки 1) On Error GoTo ... 2) либо действие строки On Error Resume Next
        On Error GoTo 0
 
        If .Cell(1, 1).Range.Fields.Count = 1 And cursor_row = 1 And cursor_column_cell <> 1 Then
 
            Dim w As Integer
 
            For w = 1 To .Rows.Count - cursor_row
                'расставляем номера по порядку в первом столбце таблицы
                .Rows(cursor_row + w).Cells(1).Range.Text = w
            Next
        End If
 
    End With
 
    Beep
 
Конец:
 
    'отменяем отключение дёргания экрана при выполнении кода
    Application.ScreenUpdating = True
 
End Sub
стал проверять нифига он не сортирует
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
06.09.2011, 23:08  [ТС]
сам файл, лучше в нём проверить
Вложения
Тип файла: rar 011.rar (46.6 Кб, 23 просмотров)
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
07.09.2011, 01:54  [ТС]
в файле удалил функцию
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
Function FunctionВыясняем_нахождение_курсора_в_таблице( _
         cursor_table, _
         cursor_row, _
         cursor_column_cell)
 
    Dim isTable As Word.Range
    Set isTable = Selection.Range
 
    'условие, если Not isTable.Information(wdWithInTable), тогда курсор находится не в таблице, тогда ...
    'cursor_table = 32767 взято в связи с тем, что переменная cursor_table имеет тип данных Integer
    'тип данных Integer может иметь максимальное значение 32767
    If Not isTable.Information(wdWithInTable) Then
        cursor_table = 32767
        'перейти к метке с именем ...
        GoTo Конец
    End If
 
    'номер таблицы в документе, где расположен курсор
    cursor_table = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count
 
    'номер строки в таблице, в документе, где расположен курсор
    cursor_row = Selection.Rows.First.Index
 
    'номер столбца, а также ячейки в таблице, в документе, где расположен курсор, даже если ширина столбца, ячейки различается
    cursor_column_cell = Selection.Cells(1).ColumnIndex
 
Конец:
 
    'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта
    Set isTable = Nothing
 
End Function
Добавлено через 1 час 0 минут
хотел спросить
Debug.Print Selection.Fields.Creator - 1297307460, что это обозначает

Добавлено через 58 минут
всё вопрос снят кроме цифирок 1297307460, что обозначают??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.09.2011, 01:54
Помогаю со студенческими работами здесь

Сортировка таблицы по столбцу
Привет всем! Подскажите, пожалуйста, какой SQL-командой можно отсортировать некоторую таблицу (Access) по определенному столбцу? Суть...

Сортировка по столбцу таблицы DataGrid
Мне необходимо, что бы при создании таблицы DataGrid строки сортировались по 1 столбцу. Как это можно сделать?

Сортировка по столбцу
В общем ребят, проблема такая. Для начало само задание : А. Создать таблицу, содержащую сведения о телефонах абонентов. Каждая запись...

Сортировка по столбцу
Здравствуйте. Есть БД &quot;Преподаватели&quot; созданная через Database Desktop, столбцы которой: |Фамилия | Имя | Отчество | Звание | Должность...

Сортировка по столбцу
Здравствуйте. Я вывожу таблицу: &lt;table&gt;&lt;thead&gt;&lt;tr&gt; &lt;th&gt;Название&lt;/th&gt; &lt;th&gt;Адрес&lt;/th&gt; &lt;th&gt;Телефон&lt;/th&gt; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru