Страницы: 1
RSS
Макрос не обрабатывает свернутые/скрытые столбцы
 
Друзья, может поможет кто советом как понять почему не работает макрос в свернутых (сгруппированых) или скрытых столбцах? Может это EXCEL не может или я где то напорол?
Суть вот в чем:
есть список и таблица с ним. В списке макрос находит значение, а дальше оффестит в таблицу и по свернутым столбцам тем же оффсетом собирает инфу
в развернутом виде ве работает, как только сверну или скрою столбцы все, выдает ошибку и не хочет ничего делать
не понимаю почему, ведь данные по сути никуда не деваются, и номера столбцов от этого не меняются, но этих столбцов у меня 13 штук спереди и мешаются (глаза мозолят)

вот код
Код
Set isFound = Sheets("Лист1").Range("B:B").Find(SerList, , LookIn:=xlValues, LookAt:=xlWhole)
isFound.Offset(, 15).Select

На выборе первого же оффсета он затыкается
Переменная объявлена, не знаю в чем тут дело может быть
 
У меня нормально работает такой код со скрытыми столбцами.
Может у вас isFound = Nothing и  поэтому выдает ошибку?
Работать надо не 12 часов, а головой.
 
Leanna, ну видимо да, что же ему еще выдавать если он поиск не модет произвести по скрытым столбца... Очень странно как то(((
Но если столбцы не скрыты - то все работает... В чем может быть дело?
 
А какие столбцы Вы скрываете? У Вас поиск осуществляется только по одному столбцу - В. Скорее всего, Вы пытаетесь выделить (.Select) ячейку именно в скрытом столбце. Как Вы себе это представляете?
 
Попробуйте поменять параметры поиска, например:
Код
LookIn:=xlFormulas
Изменено: Alexander88 - 19.02.2015 11:52:09
 
Юрий М, так все дело в Select? Скрываю я первые 13 столбцов.
Alexander88, Попробую
 
Цитата
andrey062006 пишет: Скрываю я первые 13 столбцов.
Тогда попробуйте скрыть только столбец В - тоже получите ошибку.
 
Юрий М, без Select все равно ошибку выдает. Не хочет работать. А макросы в скрытых столцах то вообще могут поиск производить? Может в этом дело?
Alexander88, попробовал, ничего не изменилось
 
Можно предположить, что Find не работает в скрытых ячейках. Тогда вариант с перебором в цикле:
Код
'Set isFound = Sheets("Лист1").Range("B:B").Find(serlist, , LookIn:=xlValues, LookAt:=xlWhole)
'isFound.Offset(, 15).Select
    For i = 1 To 1000
        If Cells(i, 2) = serlist Then
            Cells(i, 2).Offset(, 15).Select
            Exit For
        End If
    Next
 
 
Юрий М, тогда если тут идет Select, значит вместо isFound надо использовать ActiveCell. Вообщем попробовал с циклом, тоже не пашет(
 
Цитата
andrey062006 пишет: попробовал с циклом, тоже не пашет(
У меня "пашет".
 
У тебя плуг острее :)
 
Юрий М, у Вас может пашет потому что у вас простой цикл, а мне нужно использовать эту переменную в разных макросах модуля, поэтому я ее и объявил и присвоил ей значение, может в этом дело?
 
Я тоже объявил и присвоил ей значение) Если
Цитата
andrey062006 пишет: мне нужно использовать эту переменную в разных макросах модуля
то есть подозрение, что НЕ ТАМ объявили. Посмотрите, чему она у Вас равна в других процедурах? И попробуйте её объявить, как глобальную - перед самым первым Sub.
 
Про меня забыли?  :)
Код
Set isFound = Sheets("Лист1").Range("B:B").Find(serlist, LookIn:=xlFormulas, LookAt:=xlWhole)
 
Юрий М, я объявлял перед самым первым SUB в модуле... А у Вас какая тут переменная? i? и как ее тогда использовать в соем случае? Другие макросы оффсетят уже от isFound... В процедурах она равная правильным значениям, но как только сворачиваешь то везде пусто(
Alexander88, конечно не забыл, я написал чуть выше что не полчуилось по Вашему примеру, к сожалению
 
Цитата
andrey062006 пишет: А у Вас какая тут переменная? i
i тоже есть, но ведь искать serlist? Вот её я и объявил.
Андрей, Вы показали только кусочек кода. Нет ни файла, ни кода целиком - о чём можно продолжать беседу?
 
Скройте столбец В и выполните макрос.
 
andrey062006, Нужен Ваш файл-пример, на моём поиск работает
 
Юрий М, вот файл, там если столбцы свернуть макрос не выполняется, если развернуть все работает на УРА. В чем причина не знаю...
 
Цитата
Юрий М пишет: Можно предположить, что Find не работает в скрытых ячейках.
Можно не предполагать. Метод Find работает только на видимых ячейках. Как и Select.
Изменено: Михаил С. - 19.02.2015 14:33:23
 
Андрей, ну и почему Вы утверждаете, что вариант, предложенный Alexander88, не работает? Я в Вашем макросе заменил LookIn:=xlvalues на LookIn:=xlFormulas и всё сработало. И где в Вашем примере предложенный мною цикл, который не работает?
 
Цитата
Михаил С. пишет: Как и Select
Миш, а вот Select как раз и срабатывает, хотя я был уверен, что не должен))
 
Юрий М, странно, сейчас сработало, в первый раз не срабатывало(
Спасибо.
Alexander88, Вам тоже спасибо большое)
 
Добрый день.
Есть скрытые столбцы A:E
почему то не работает код
Do While Workbooks(NameB1).Sheets("Personal").Cells(iRow, 4).Text <> ""
он начинает считать с первого видимого столбца
а там пустые ячейки - и цикл сразу заканчивается
Если открыть столбцы то все начинает работать.
 
iRow Как определяете?
.Cells(Rows.Count, 10).End(xlUp).Row - если так, то все верно, скрытых не заметите.
Так пробуйте:
iRow=UsedRange.Rows.Count
 
Переменную Row я сам вычисляю. Дело не в ней.
А вот проблема именно в колонках. Если колонки не скрыты то считает что колонка A = номер один
а если скрыть столбцы A:E то для  Workbooks(NameB1).Sheets("Personal").Cells(iRow, 4).Text считает первой колонкой уже столбец F
Причем если поставить прерывание на этой строке то дебагер показывает "" а если открыть столбцы то дебагер показывает уже "3"
Я конечно пока макрос работает колонки открыл, но это как то не спортивно..
Первый раз с такой фишкой столкнулся
Страницы: 1
Наверх