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

Условие для цикла Do While

11.06.2011, 22:38. Показов 5319. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
имеется таблица MS Word, в некоторых ячейках которой имеется текст со шрифтом красного цвета. в процессе работы программы в некоторых ячейках цвет шрифта заменяется на обычный. эту программу нужно повторять до тех пор, пока в таблице не останется ни одной ячейки с красным шрифтом. так вот, как задать это условие - наличие красного текста в таблице?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2011, 22:38
Ответы с готовыми решениями:

Условие для цикла
Здравствуйте, никак не доходит как сделать цикл для такого условия: int n,org, n1, n2, n3,n4, n5; org = n;//оригинальное значение ...

Условие для цикла С++
Доброго всем времени суток! Помогите пожалуйста человеку который только начал открывать для себя С++ Задача следующая: необходимо...

Условие для цикла
Вводится ряд целых чисел от 0 до 9, сколько чисел неизвестно, потом с ними производятся операции внутри цикла Подскажите, пожалуйста,...

27
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
17.06.2011, 22:59
Студворк — интернет-сервис помощи студентам
diletant2,
чтобы узнать, сколько в Word в одной таблице может быть максимальное количество столбцов:
при вставке таблицы через интерфейс Word - укажите количество столбцов 1000. Появится сообщение, сколько в таблице может быть максимально столбцов.
Цитата Сообщение от diletant2 Посмотреть сообщение
ОК, а Вы запускать пробовали?
да, я как правило тестирую все коды, которые выкладываю на форумах.

Цитата Сообщение от diletant2 Посмотреть сообщение
м.б. вставлять столбцы не по Selection а по Range? или что?
только по Selection вставляются столбцы.

Добавлено через 8 минут
diletant2,
да, что-то не то с кодом (сейчас попробовал).
0
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
17.06.2011, 23:54  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
diletant2,

да, я как правило тестирую все коды, которые выкладываю на форумах.

да, что-то не то с кодом (сейчас попробовал).
интересно, что для одной ячейки с красным текстом - работает
__|__|__|__|
|rd|__|__|__|
__|__|__|__|

для нескольких, не связанных между собой - тоже:

__|__|__|__|
|rd|__|rd|__|
__|__|__|__| или

__|__|__|__|
|rd|__|__|__|
__|__|rd|__|

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

__|__|__|__|
|rd|rd|__|__|
__|__|__|__| или

__|__|__|__|
|rd|__|__|__|
__|rd|__|__|

в чем же дело?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
17.06.2011, 23:57
Цитата Сообщение от diletant2 Посмотреть сообщение
в чем же дело?
не знаю. Не убирается красный цвет, если полностью вся ячейка выделена красным цветом. Там такая ситуация, что добавляется новый столбец справа с характеристиками не того столбца, который выделен, а смежного (тот, который справа). Если в этом столбце справа вся ячейка выделена красным, то новый добавляемый столбец содержит красный цвет. Что-то с этим связано.

Сейчас ищу способ другой.

В Worde полно всякого такого непонятного.
0
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
18.06.2011, 00:06  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение

В Worde полно всякого такого непонятного.
интирресно!..
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
18.06.2011, 00:22
Код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub P2()
Dim i As Integer
Dim КолСтолбцов As Integer
КолСтолбцов = Selection.Tables(1).Columns.Count
'Двигаемся от последнего столбца к первому.
For i = КолСтолбцов To 1 Step -1
    'Выделяем каждый столбец.
    Selection.Tables(1).Columns(i).Select
    'Ищем в выделенном диапазоне красный шрифт.
    With Selection.Range.Find
        .Format = True
        .Font.ColorIndex = wdRed
        .Wrap = wdFindStop
        .Execute
        If .Found = True Then
            Selection.Font.ColorIndex = wdAuto
            Selection.InsertColumnsRight
            Selection.Tables(1).AutoFitBehavior Behavior:=wdAutoFitWindow
        End If
    End With
Next i
End Sub


Если таблицы небольшие (мало ячеек) и таблиц немного в документе, то можно Find заменить просмотром всех ячеек.
1
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
18.06.2011, 02:14  [ТС]
Busine2009

ОК! я просто в Ваш предыдущий код вставил всего одну строчку - и все срослось:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub P1()
Do
    With Selection.Tables(1).Range.Find
        .Format = True
        .Font.ColorIndex = wdRed
        .Wrap = wdFindStop
        .Execute
        If .Found = False Then
            Exit Do
        End If
        .Parent.Columns(1).Select
        Selection.Font.ColorIndex = wdAuto
        Selection.InsertColumnsRight
        Selection.Font.ColorIndex = wdAuto ' <--- просто во вставленном столбце тоже делаем цвет авто
        'При добавлении столбца почему-то изменяется ширина таблицы.
        Selection.Tables(1).AutoFitBehavior wdAutoFitWindow
    End With
Loop
End Sub
Добавлено через 1 час 45 минут
ха, столкнулся с проблемой: если в таблице полностью выделить строку вместе со знаком строки и заменить текст в ячейках на красный
|__|__|__|__|о
|__|__|__|__|о
|__|__|__|__|о
а затем выделить все ячейки в этой строке без выделения знака строки и заменить текст на авто, то знак строки не заменится и останется красным
|__|__|__|__|о
|__|__|__|__|о
|__|__|__|__|о

так вот, как выделить этот знак строки и как заменить его цвет на авто, не затронув цвет текста в ячейках?
1
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
18.06.2011, 07:49
Код:
Visual Basic
1
2
3
4
5
6
Sub P2()
Dim Строка As Word.Row
For Each Строка In Selection.Tables(1).Rows
    Строка.Range.Characters.Last.Font.ColorIndex = wdAuto
Next Строка
End Sub


Я писал, что только через Selection можно добавлять столбцы в таблицу. Есть ещё способ:
Visual Basic
1
2
3
Sub P1()
ActiveDocument.Tables(1).Columns.Add BeforeColumn:=ActiveDocument.Tables(1).Columns(2)
End Sub
1
6 / 4 / 0
Регистрация: 02.05.2011
Сообщений: 102
18.06.2011, 11:57  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
Sub P2() Dim Строка As Word.Row For Each Строка In Selection.Tables(1).Rows Строка.Range.Characters.Last.Font.ColorI ndex = wdAuto Next Строка End Sub
спасибо, работает!

интересно, а без цикла - никак нельзя?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2011, 11:57

Условие для цикла
Добрый вечер, у меня такой вопрос как сделать чтобы цикл выводил информацию из базы данных которая совпадает с условием, к примеру. ...

Условие для прекращения цикла
Имеется задача: Ввести двоичный код и перевести его в десятичный. Имеется подсказка для решения задачи: использовать деление и деление с...

Не могу составить условие для цикла do-while
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; main() { char c; do c=getch(); while(c!='1'||c!='2'||c!='3'||c!='4'||c!='5'||c!='0'); ...

Условие для преждевременного выхода из цикла for
Помогите пожалуйста придумать условие для преждевременного выхода из цикла for. Нужно чтобы переменная a выводилась один раз при нажатии на...

Не выполняется условие для окончания цикла
Подскажите в чем прикол? пишу условия для окончания цикла , j-&gt;next!=i|| i!=j записать пробовал по разному и в скобки заключал разное...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru