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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2016, 13:34   #1
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию Не переходит в следующую книгу

Добрый день!

Тестирую код, открываю вместо 25 книг только 01, 02 и 14. После 2ой он не переходит в 14ую, а выполняет действия, предназначенные для 3ей книги, всё в той же 2ой. в чем может быть проблема?

Спасибо!

Код:
Sub Correct_alot()
  On Error Resume Next
  For Each w In Array( _
  "01.xls", "02.xls", "03.xls", "04.xls", "05.xls", _
  "06.xls", "07.xls", "08.xls", "09.xls", "10.xls", _
  "11.xls", "12.xls", "13.xls", "14.xls", "15.xls", _
  "16.xls", "17.xls", "18.xls", "19.xls", "20.xls", _
  "21.xls", "22.xls", "23.xls", "24.xls", "25.xls")
    Windows(w).Activate

On Error Resume Next
     Cells.Select
    Selection.UnMerge

  Next
  On Error GoTo 0
End Sub
Ogeris вне форума Ответить с цитированием
Старый 22.09.2016, 14:00   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В том, что нет очередной открываемой книги, следовательно обрабатывается открытая ранее.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.09.2016, 14:03   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

проблема в том, что
попытка активировать не существующее окно (при w = "03.xls" и далее)
Windows(w).Activate
в нормальных условиях приводила бы к ошибке, а в условиях написанного второй строкой:
On Error Resume Next
не влечет никаких действий и активным остается окно, которое было активным до выполнения
Windows(w).Activate
вот в нем и выделяются все ячейки, и отменяется обьединение среди них всех.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.09.2016, 14:38   #4
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
проблема в том, что
попытка активировать не существующее окно (при w = "03.xls" и далее)
Windows(w).Activate
в нормальных условиях приводила бы к ошибке, а в условиях написанного второй строкой:
On Error Resume Next
не влечет никаких действий и активным остается окно, которое было активным до выполнения
Windows(w).Activate
вот в нем и выделяются все ячейки, и отменяется объединение среди них всех.
Спасибо!
Я-то думал, что при Resume next он перейдёт к следующей книге
Ogeris вне форума Ответить с цитированием
Старый 22.09.2016, 14:40   #5
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию

Как можно это исправить? Чтобы при отсутствии 03 книги он переходил к четвертой, и дальше по списку?
Ogeris вне форума Ответить с цитированием
Старый 22.09.2016, 15:22   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

После попытки активации проверять была ли ошибка. Если нет, то действуем по плану, если была - то скидываем ошибку и пробуем следующую книгу.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.09.2016, 15:26   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Я-то думал, что при Resume next он перейдёт к следующей книге
ага, Resume next Workbook )))
беда в том, что макрос выполняет не то, о чем Вы думали, когда его писали, а то, что в нем написано
если формировать массив не из всего подряд, а только из того, что есть, то все будет нормально работать и без On Error Resume Next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.09.2016, 04:52   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно просто перебрать все открытые книги, и, если имя книги соответствует указанному шаблону, то выполнить в ней требуемые действия, не используя On Error Resume Next, Select и Activate.
Например так:
Код:
Sub qq()
    Dim wb As Workbook
    For Each wb In Workbooks
        If wb.Name Like "[0-2][0-9].xls" Then
           wb.Sheets(1).Cells.UnMerge
        End If
    Next
End Sub
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 23.09.2016 в 04:55.
SAS888 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не переходит по ссылке из-за css Dennis777 HTML и CSS 1 21.03.2014 11:19
не переходит на другой лист evdss Microsoft Office Excel 1 18.02.2014 08:20
Не переходит по ссылке Артем112а Помощь студентам 4 15.04.2011 18:46
Прицел переходит в курсор Lotles Компьютерное железо 0 14.12.2010 22:00