Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
1

Очень надо

06.01.2011, 23:49. Просмотров 2714. Ответов 41
Метки нет (Все метки)

Необходимо написать макрос по ворду, сам сделать не могу, так как напрочь не знаю VB так что надеюсь на отзывчивость.
Задание такое:
Имеется текст, в тексте есть открывающие и закрывающие скобки, нужно найти парные скобки, причём пара должна выделяться красным цветом (пара это окрывающая и парная ей закрывающая скобки). первая открывающая скобка всегда выделяется красным цветом, далее как понимаю надо задать счётчик открывающих скобок, но как это сделать всё - не знаю, помогите, плиз
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2011, 23:49
Ответы с готовыми решениями:

Помогите очень надо
Public Sub WorkWithSections() 'В документе DocThree создаются разделы...

Нужен очень простой и очень содержательный мануал по взаимодействию приложений, написанных на VB 6.0
Добрый день всем, очень нужен очень простой в понимании и очень содержательный...

Ну очень простой макрос.
Здравствуйте дорогие программисты. У меня к Вам маленькая просьба. Вы не могли...

Очень медленное копирование?
Здравствуйте,уважаемые форумчане.Я написал не сложный макрос,но при копировании...

Надо убрать цену
Из базы выгружаються одни названия с ценами в скобках, другие сначала с...

41
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 09:42  [ТС] 21
ну я технарь, и поскольку языка программирования не знаю, то у меня в голове стандартная логика: нужно сделать счётчик, чтобы отмерять парность скобок))
0
Busine2009
Заблокирован
07.01.2011, 09:45 22
Цитата Сообщение от antonbogus Посмотреть сообщение
нужно найти парные скобки
сейчас повнимательней почитал. Я использовал инструмент поиска, поэтому считаю, что задание решено. Так что про счётчики не вижу смысла смотреть.
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 09:50  [ТС] 23
ну я понимаю, но если не будет сильно большой наглостью с моей стороны, могли бы вы и со счётчиком сделать?

Добавлено через 2 минуты
просто мысль в голове промелькнула, я лузер в программировании, алгоритм я понимаю, но языка напрочь не знаю, думаю преподаватель не поверит, что я смог сделать столь оригинальное решение здачи
0
Busine2009
Заблокирован
07.01.2011, 09:57 24
antonbogus,
а напишите, как то, что вы хотите было бы на Паскале.
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 10:09  [ТС] 25
i1:=1;
while i<>0
begin
i:=i1;
readln(здесь задать оператор перебирающий символы);
If "(" then i1:=i+1;
else If ")" then i1:=i-1;
end;
(ну и тут по идее надо выделить парную скобку)

Добавлено через 1 минуту
сори за тупость написанного, как вспомнилося, так и написалося))
0
Busine2009
Заблокирован
07.01.2011, 10:10 26
Цитата Сообщение от antonbogus Посмотреть сообщение
(здесь задать оператор перебирающий символы)
т.е. вы предлагаете не использовать поиск, а просматривать все символы в документе?
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 10:16  [ТС] 27
Ну да, именно, ну понимаю, логика примитивная.

Добавлено через 4 минуты
хотя стоп, поиск необходим для поиска первой открывающей скобки, иначе этот счётчик заранее не имеет смысла.
0
Busine2009
Заблокирован
07.01.2011, 10:19 28
antonbogus,
а в паскале есть поиск?

Добавлено через 1 минуту
Прокомментируйте код, который вы выложили, а то я очень долго буду вникать, что там написано.
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 10:20  [ТС] 29
в паскале насколько помню поиска нету. Написано следующее:
найдена первая открывающая скобка, присваеваем к переменной формата real значение i1=1, далее ставим цикл, что пока переменная i не будет равна 0 мы будем повторять следующую последовательность действий:
присваеваем переменной i значение i1 содержащееся в буфере, далее переходим на следующий символ, считываем его, и если это ( то мы к значению переменной i прибавляем 1 и присваем получившееся как значение i1, если же нам встречается ) то мы от значения i отнимаем 1 и присваиваем это значение i1, а если какой нить другой символ, то сразу снова поторяется цикл. этот цикл выполняется, пока значение i не будет равно нулю, как только i=0 мы выходим из цикла и красим последний считанный символ в красный цвет.
0
Busine2009
Заблокирован
07.01.2011, 10:26 30
Можно сделать так ещё. Вы будете писать какой вам инструмент нужен, а я вам код выложу.
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 10:31  [ТС] 31
ну вот данный счётчик описать возможно? как с поиском раюботать я понял, как данный счётчик описать в бэйсике? я его прилажу к тому макросу, что вы мне написали и всё
0
Busine2009
Заблокирован
07.01.2011, 10:33 32
Visual Basic
1
2
3
4
5
6
7
Sub m_1()
Dim i As Long
Dim j As Long
For i = 1 To ActiveDocument.Characters.Count
    j = j + 1
Next i
End Sub
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 10:35  [ТС] 33
эм, а как сделать так, чтобы когда i=0 он выделил этот символ?
0
Busine2009
Заблокирован
07.01.2011, 10:42 34
В дополнение к предыдущему коду:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub m_1()
'Не участвуют в коде
Dim i As Long
Dim j As Long
'Продолжать выполнять команды столько раз, сколько символов в документе.
For i = 1 To ActiveDocument.Characters.Count
    'Если символ является открывающей скобкой, то
    If ActiveDocument.Characters(i).Text = "(" Then
        'подсчёт
        j = j + 1
    End If
Next i
End Sub
Добавлено через 55 секунд
Цитата Сообщение от antonbogus Посмотреть сообщение
он выделил этот символ?
как выделил?
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 10:59  [ТС] 35
ну выделил цветом тот символ, на котором значение переменной в счёте будет равно 0

Добавлено через 13 минут
Ладно, я почти понял как это делается, думаю дойдёт остальное, спасибо огроменное!!!!
0
Busine2009
Заблокирован
07.01.2011, 11:00 36
antonbogus,
спрашивайте, если что.
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 11:03  [ТС] 37
Ну если за ближайшие дни не разберусь - обязательно обращусь.)) ещё раз спасибо
0
Busine2009
Заблокирован
07.01.2011, 11:35 38
antonbogus,
всё, до меня дошло, что подразумевалось под тем, что нужно обязательно закрашивать открывающую кавычку:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub m_1()
Dim i As Long
Dim vFlag As Boolean
For i = 1 To ActiveDocument.Characters.Count
    If ActiveDocument.Characters(i).Text = "(" Then
        ActiveDocument.Characters(i).Font.Color = wdColorRed
        vFlag = True
    ElseIf ActiveDocument.Characters(i).Text = ")" And vFlag = True Then
        ActiveDocument.Characters(i).Font.Color = wdColorRed
        vFlag = False
    End If
Next i
End Sub
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
07.01.2011, 18:20  [ТС] 39
спасибо
0
antonbogus
2 / 2 / 0
Регистрация: 06.01.2011
Сообщений: 22
11.01.2011, 03:55  [ТС] 40
В итоге писал сам))
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
Sub m1()
'
 
Dim i As Long
Dim j As Integer
 
j = 0
Selection.Font.Color = wdColorRed
 
For i = 1 To ActiveDocument.Characters.Count
If Selection.Text = "(" Then
j = j + 1
ElseIf Selection.Text = ")" Then
j = j - 1
End If
If j = 0 Then
Selection.Font.Color = wdColorRed
Exit For
ElseIf j <> 0 Then
Selection.MoveEnd unit:=wdCharacter, Count:=1
Selection.MoveStart unit:=wdCharacter, Count:=1
End If
Next i
End Sub
вот за эту ахинею зачёт и поставили, спасибо всем за помощь
0
11.01.2011, 03:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2011, 03:55

Формат даты (американский и не очень)
Есть форма на ней 2 текстбокса, отформатированные для ввода даты есть 2 ячейки...

Очень нужен ваш совет
Всем доброго времени суток! В общем суть проблемы такая: дали...

Очень нужно. программа с userform
с помощью UserForm ввести значения коэффициентов A1, B1, C1, A2, B2,C2 и...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru