![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 200
|
![]()
Макрос в приложенном файле имеет странную особеность: он работает ровно в половине раз, то есть один раз срабатывает, в следующий нет и комп долго висит. Когда его писал я хотел просто удалить записи 0 файл(а,ов). Как такое может быть?
P.S.А еще он частенько удаляет не все записи,оставляя ровно три, хотя все записи совершенно идентичны. |
![]() |
![]() |
![]() |
#2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Вы бы лучше сам макрос нам показали...
Не увидев код, Вам никто ничего не посоветует. |
![]() |
![]() |
![]() |
#3 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Да, юноша, что-то вы намудрили. Выложите текст макроса. Хотя можно и без него сказать, что в макросе присутствует логическая ошибка.
Приложенном файле я макроса не нашел. Файл текстовый, хотя имеет расширение .doc
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#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. Через раз он идеально срабатывает. А в остальных случаях комп надолго задумывается, хотя в обоих случаях ситуации совершенно анологичные. |
![]() |
![]() |
![]() |
#5 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Весь ваш макрос можно заменить одной строкой:
Код:
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 11.06.2009 в 12:27. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 200
|
![]()
Мастер, мастер. Спасибо большое!
Я вообще не знаю Visual Basic, но даже я понимал, что там много лишних строк. viter.alex можешь обьяснить в чем смысловая нагрузка ",,,,,,,,,"???? Никогда ничего похожего не видел. А если мне еще хорошую книжку посоветуют по Visual Basic адаптированную как раз под написание макросов, то я вообще на седьмом небе от счатья буду. |
![]() |
![]() |
![]() |
#7 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Смысловая нагрузка состоит в том, что после каждой запятой должно следовать значение соответствующего параметра команды. Если ничего после запятой не стоит, то значение берется по умолчанию.
Вы можете посмотреть это сами.
![]() Запятые можно не ставить, но тогда нужно точно указывать имя параметра, например, ваша строка может выглядеть так: Код:
Кстати, как только вы напишите имя параметра и поставите после него двоеточие и знак равенства, то этот параметр подсветится в подсказке, давая знать, что имя параметра вы написали правильно. Если подсказка не появляется, значит либо объект или метод не распознан по какой-то причине.
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 11.06.2009 в 16:09. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 200
|
![]()
Супер. Я даже не расчитывал на такой подробный ответ. Большое спасибо.
|
![]() |
![]() |
![]() |
#9 |
Новичок
Джуниор
Регистрация: 23.05.2009
Сообщений: 167
|
![]()
Selection.Find.ClearFormatting
Я не понимаю вот этой строки, кто-нибудь может объяснить ее на своих пальцах, так сказать? |
![]() |
![]() |
![]() |
#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 |