|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.06.2009, 10:19 | #1 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 200
|
[B]Странный макрос[/B]
Макрос в приложенном файле имеет странную особеность: он работает ровно в половине раз, то есть один раз срабатывает, в следующий нет и комп долго висит. Когда его писал я хотел просто удалить записи 0 файл(а,ов). Как такое может быть?
P.S.А еще он частенько удаляет не все записи,оставляя ровно три, хотя все записи совершенно идентичны. |
11.06.2009, 10:32 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Вы бы лучше сам макрос нам показали...
Не увидев код, Вам никто ничего не посоветует. |
11.06.2009, 10:43 | #3 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Да, юноша, что-то вы намудрили. Выложите текст макроса. Хотя можно и без него сказать, что в макросе присутствует логическая ошибка.
Приложенном файле я макроса не нашел. Файл текстовый, хотя имеет расширение .doc
Лучше день потерять — потом за пять минут долететь!©
|
11.06.2009, 11:17 | #4 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 200
|
Извиняйте, лопухнулся, что текст не выложил.
Sub Delete_0_Files() ' ' Delete_0_Files Ìàêðîñ ' ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFor matting With Selection.Find .Text = "0 ôàéë(à,îâ)^p" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Selection.Find.Execute Replace:=wdReplaceAll End Sub Следует отметить несколько фактов. 1. текст в досовской кодировке 866, потому что записи туда передаются из консоли. 2. Вместо .Text = "0 ôàéë(à,îâ)^p" должно быть .Text = "0 файл(а,ов)^p" (в Visual Basic все отображается правильно) 3. Через раз он идеально срабатывает. А в остальных случаях комп надолго задумывается, хотя в обоих случаях ситуации совершенно анологичные. |
11.06.2009, 11:42 | #5 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Весь ваш макрос можно заменить одной строкой:
Код:
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 11.06.2009 в 12:27. |
11.06.2009, 15:15 | #6 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 200
|
Мастер, мастер. Спасибо большое!
Я вообще не знаю Visual Basic, но даже я понимал, что там много лишних строк. viter.alex можешь обьяснить в чем смысловая нагрузка ",,,,,,,,,"???? Никогда ничего похожего не видел. А если мне еще хорошую книжку посоветуют по Visual Basic адаптированную как раз под написание макросов, то я вообще на седьмом небе от счатья буду. |
11.06.2009, 16:04 | #7 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Смысловая нагрузка состоит в том, что после каждой запятой должно следовать значение соответствующего параметра команды. Если ничего после запятой не стоит, то значение берется по умолчанию.
Вы можете посмотреть это сами.
Запятые можно не ставить, но тогда нужно точно указывать имя параметра, например, ваша строка может выглядеть так: Код:
Кстати, как только вы напишите имя параметра и поставите после него двоеточие и знак равенства, то этот параметр подсветится в подсказке, давая знать, что имя параметра вы написали правильно. Если подсказка не появляется, значит либо объект или метод не распознан по какой-то причине.
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 11.06.2009 в 16:09. |
11.06.2009, 16:59 | #8 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 200
|
Супер. Я даже не расчитывал на такой подробный ответ. Большое спасибо.
|
11.06.2009, 19:32 | #9 |
Новичок
Джуниор
Регистрация: 23.05.2009
Сообщений: 167
|
Selection.Find.ClearFormatting
Я не понимаю вот этой строки, кто-нибудь может объяснить ее на своих пальцах, так сказать? |
12.06.2009, 09:49 | #10 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Процедура Selection.Find.ClearFormatting выполняет сброс настроек поиска в значения по умолчанию. Это нужно делать в том случае, если вы проводите поиск через объект Selection.
При поиске через Range этого не происходит. Пример. Ведем поиск через Selection: Код:
Код:
Код:
Лучше день потерять — потом за пять минут долететь!©
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос постоянно обрабатывает события. При открытии другой книги макрос обрывается. | Ples | Microsoft Office Excel | 8 | 17.12.2016 18:15 |
В окне кода странный шрифт | Elvisnya | Общие вопросы Delphi | 4 | 04.06.2009 12:34 |
Странный тип | Yuran | Общие вопросы Delphi | 4 | 10.06.2008 10:11 |
Странный скрипт на страницах моих сайтов! | Lx62GjVWZQJFjPD | JavaScript, Ajax | 5 | 29.03.2008 17:22 |
Странный, не стандартный файл | valerij | Microsoft Office Excel | 4 | 26.03.2008 12:24 |