powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Word - очистка содержимого ячейки по условию
7 сообщений из 7, страница 1 из 1
Word - очистка содержимого ячейки по условию
    #34986622
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, как реализовать в коде следующую построчную проверку таблицы - если во втором столбце, среди прочих слов не_содержится знак , то нужно удалить содержимое первой ячейки в этой строке (в ячейках первого столбца - нумерованный список), попутно получая его автоматическую перенумерацию.

Интересует алгоритм, как в MS Word программно определять факт наличия требуемого слова в ячейке таблицы.
...
Рейтинг: 0 / 0
Word - очистка содержимого ячейки по условию
    #34986649
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На, поиграйся:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub a()
    Dim c As Cell
    For Each c In ActiveDocument.Tables( 1 ).Columns( 2 ).Cells
        If InStr(c.Range, "#") Then
            ActiveDocument.Tables( 1 ).Columns( 1 ).Cells(c.RowIndex).Range = "AAAA"
        End If
    Next
End Sub
...
Рейтинг: 0 / 0
Word - очистка содержимого ячейки по условию
    #34986773
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как грамотно организовать проверку именно на не_содержание знака ?
...
Рейтинг: 0 / 0
Word - очистка содержимого ячейки по условию
    #34999711
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то не получается...
Пробую с таким фрагментом кода:
Код: plaintext
1.
2.
3.
4.
5.
For Each c In ActiveDocument.Tables( 1 ).Columns( 2 ).Cells
        If Not InStr(c.Range, "№") Then
            ActiveDocument.Tables( 1 ).Columns( 1 ).Cells(c.RowIndex).Range.Delete
        End If
Next
Но ничего в первой колонке не происходит...
Может, нужно ещё как-то дополнительно учитывать, что в первом столбце - не простое содержимое, а список?
Как из него удалять только выборочные значения?
...
Рейтинг: 0 / 0
Word - очистка содержимого ячейки по условию
    #35002254
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeCrunchЧто-то не получается...
Пробую с таким фрагментом кода:
Код: plaintext
1.
2.
For Each c In ActiveDocument.Tables( 1 ).Columns( 2 ).Cells
        If Not InStr(c.Range, "№") Then
Но ничего в первой колонке не происходит...Потому что не простой символ а юникодный, InStr его не находит. Можно вот так вот:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    For Each c In ActiveDocument.Tables( 1 ).Columns( 2 ).Cells
        For i =  1  To Len(c.Range)
            If AscW(Mid(c.Range, i,  1 )) =  8470  Then
                ActiveDocument.Tables( 1 ).Columns( 1 ).Cells(c.RowIndex).Range.Delete
                Exit For
            End If
        Next
    Next
...
Рейтинг: 0 / 0
Word - очистка содержимого ячейки по условию
    #35019012
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наконец-то удалось добиться требуемого! :)
Правда, для определения на не_содержание знака используется дополнительная проверка на соответствие флагу (интересно, а какие ещё есть варианты?) и с удалением отдельных значений автоматической нумерации - используется специальный метод:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
For Each c In ActiveDocument.Tables( 1 ).Columns( 2 ).Cells

    flag = False
        
        For i =  1  To Len(c.Range)
            If AscW(Mid(c.Range, i,  1 )) =  8470  Then
                flag = True
            End If
        Next i
            
        If flag = False Then
            ActiveDocument.Tables( 1 ).Columns( 1 ).Cells(c.RowIndex).Range.ListFormat.RemoveNumbers
        End If
        
    Next c
...
Рейтинг: 0 / 0
Word - очистка содержимого ячейки по условию
    #35019050
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeCrunchНаконец-то удалось добиться требуемого! :)
Правда, для определения на не_содержание знака используется дополнительная проверка на соответствие флагу (интересно, а какие ещё есть варианты?)Ну можно играться с разными типами циклов, кстати не забывай о команде exit for очень удобная вещь если точно знаешь что больше крутится в цикле не нужно.

А вообще-то, есть и более простой способ, только я про него забыл сначала :)
Код: plaintext
1.
If InStrB(c.Range, ChrW( 8470 ))= 0  Then
    ....
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Word - очистка содержимого ячейки по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]