Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2017, 10:08   #1
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию один макрос для двух обратных команд замены

возможно ли написать единый макрос для замены, который при первом клике менял бы X на Y, а при втором - обратно: Y на X?
(для осуществления и отмены разных временных операций)
caute вне форума Ответить с цитированием
Старый 10.04.2017, 10:35   #2
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

А в чем проблема? Запомните номер клика в переменной, например так:
Код:
Sub A()
Static B As Boolean
    If B Then ' второй запуск
        MsgBox "Y => X"
    Else ' первый запуск
        MsgBox "X <= Y"
    End If
    B = Not B
End Sub
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 12.04.2017, 08:41   #3
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

в таком виде работает только "первый запуск" (
caute вне форума Ответить с цитированием
Старый 12.04.2017, 09:09   #4
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от caute Посмотреть сообщение
...первый запуск...
Чего первый запуск? Похоже, тема вами не раскрыта.

Например, если на мой макрос повесить кнопку, то работать будет то посинения
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 15.04.2017, 03:35   #5
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

конкретно вот - может, что не так, не журите чайника:
Код:
Sub том_страница()
 frepl30 ". Т. ", ", т." & Chr(160)
 frepl30 ". С. ", ", с." & Chr(160)
 frepl30 ". Ч. ", ", ч." & Chr(160)
 frepl30 ", Т. ", ", т." & Chr(160)
 frepl30 ", С. ", ", с." & Chr(160)
 frepl30 ", Р. ", ", p." & Chr(160)
End Sub
Sub том_страница_заглавные()
 frepl30 ". т. ", ", Т." & Chr(160)
 frepl30 ". с. ", ", С." & Chr(160)
 frepl30 ". ч. ", ", Ч." & Chr(160)
 frepl30 ", т. ", ", Т." & Chr(160)
 frepl30 ", с. ", ", С." & Chr(160)
 frepl30 ", p. ", ", Р." & Chr(160)
End Sub
Sub тома_и_страницы()
Static B As Boolean
    If B Then ' том_страница_заглавные
    MsgBox "Y => X"
    Else ' том_страница
    MsgBox "X <= Y"
    End If
    B = Not B
End Sub
caute вне форума Ответить с цитированием
Старый 15.04.2017, 06:27   #6
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Если так, то будет поочередно запускать ваши макросы:
Код:
Sub тома_и_страницы()
Static B As Boolean
    If B Then
        Call том_страница_заглавные
    Else
        Call том_страница
    End If
    B = Not B
End Sub
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 15.04.2017, 09:40   #7
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

так работает, спасибо, добрый Вождь!
познавательный вопрос: какую строку надо добавить в макрос, чтобы после его исполнения курсор оставался на том же месте, а не скакал в начало документа? (как в этом макросе - после обработки проматывает в начало дока)

Еще проблемки вскрылись:
1. если замена происходит в сносках (постраничных или концевых - без разницы) вида:
Иванов И.А. Сочинения, т. 3, с. 44
то после работы макроса ВСЯ строка почему-то становится курсивной.

2. А если курсор стоит в тексте, то концевые сноски макросом не обрабатываются.

Последний раз редактировалось caute; 15.04.2017 в 11:35.
caute вне форума Ответить с цитированием
Старый 17.04.2017, 12:04   #8
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от caute Посмотреть сообщение
...какую строку надо добавить в макрос...
В какой макрос? Вы выложили только кусок кода, который не делает ничего, кроме запуска каких-то неизвестных макросов. Обсуждать просто нечего.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 23.04.2017, 09:06   #9
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

ну вот, только заменил последнюю часть:
Код:
Sub том_страница()
 frepl30 ". Т. ", ", т." & Chr(160)
 frepl30 ". С. ", ", с." & Chr(160)
 frepl30 ". Ч. ", ", ч." & Chr(160)
 frepl30 ", Т. ", ", т." & Chr(160)
 frepl30 ", С. ", ", с." & Chr(160)
 frepl30 ", Р. ", ", p." & Chr(160)
End Sub
Sub том_страница_заглавные()
 frepl30 ". т. ", ". Т." & Chr(160)
 frepl30 ". с. ", ". С." & Chr(160)
 frepl30 ". ч. ", ". Ч." & Chr(160)
 frepl30 ", т. ", ". Т." & Chr(160)
 frepl30 ", с. ", ". С." & Chr(160)
 frepl30 ", p. ", ". Р." & Chr(160)
End Sub
Sub тома_и_страницы()
Static B As Boolean
    If B Then
        Call том_страница_заглавные
    Else
        Call том_страница
    End If
    B = Not B
End Sub
caute вне форума Ответить с цитированием
Старый 23.04.2017, 11:29   #10
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от caute Посмотреть сообщение
ну вот...
И что же тут такого, что вы не выкладывали раньше Не хотите выкладывать код, опишите, что ваши макросы делают. В частности, макрос frepl30.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для замены русских букв на греческие voevodik Microsoft Office Word 2 21.05.2016 11:08
Макрос для замены содержимого ссылок AleksP Microsoft Office Word 1 12.12.2014 04:06
Макрос для замены текста Georgetta Microsoft Office Word 8 05.08.2011 12:00
макрос для замены кавычек caute Microsoft Office Word 10 23.05.2011 00:41
Макрос для поиска/замены Davidoff Microsoft Office Excel 1 20.01.2007 16:01