Всех приветствую! Помогите, пожалуйста, с написанием макроса, который загонял бы в массив только отфильтрованные(видимые) значения. Макрос:
Sub FltR() Dim qarr, lrw&, i&, b#, s With Лист1
s = 0
lrw = .Range("D" & Rows.Count).End(xlUp).Row
qarr = .Range("C2:D" & lrw).SpecialCells(xlVisible) OnErrorResumeNext For i = LBound(qarr) ToUBound(qarr) If qarr(i, 2) = "EUR"Then
b = 1 Else
b = .Range("F1").Value EndIf
qarr(i, 1) = Application.Round(qarr(i, 1) / b, 2)
s = s + qarr(i, 1) Next i OnErrorGoTo0
.Range("K1") = "ВСЕГО КП на сумму: " & Format(s, "Standard") & " " & " евро." With .Range("K1")
.Font.Color = -3407872
.Font.Bold = True EndWith EndWith EndSub
работает не совсем корректно. При фильтрации по нескольким диапазонам, он сохраняет данные только первого отфильтрованного блока, игнорируя остальные. Подскажите, где подправить нужно? И ещё вопрос: можно ли как-то сделать, чтобы макрос запускался автоматически при фильтрации? Пример прилагаю.
Всех приветствую! Помогите, пожалуйста, с написанием макроса, который загонял бы в массив только отфильтрованные(видимые) значения. Макрос:
Sub FltR() Dim qarr, lrw&, i&, b#, s With Лист1
s = 0
lrw = .Range("D" & Rows.Count).End(xlUp).Row
qarr = .Range("C2:D" & lrw).SpecialCells(xlVisible) OnErrorResumeNext For i = LBound(qarr) ToUBound(qarr) If qarr(i, 2) = "EUR"Then
b = 1 Else
b = .Range("F1").Value EndIf
qarr(i, 1) = Application.Round(qarr(i, 1) / b, 2)
s = s + qarr(i, 1) Next i OnErrorGoTo0
.Range("K1") = "ВСЕГО КП на сумму: " & Format(s, "Standard") & " " & " евро." With .Range("K1")
.Font.Color = -3407872
.Font.Bold = True EndWith EndWith EndSub
работает не совсем корректно. При фильтрации по нескольким диапазонам, он сохраняет данные только первого отфильтрованного блока, игнорируя остальные. Подскажите, где подправить нужно? И ещё вопрос: можно ли как-то сделать, чтобы макрос запускался автоматически при фильтрации? Пример прилагаю.Xpert
Здравствуйте. Так не работают с видимыми ячейками, их только перебирают
Sub FltR() Dim qarr, lrw&, i&, b#, b1#, s#, Rng As Range, cel As Range, vl# With Лист1
s = 0
b1 = .Range("F1").Value
lrw = .Range("D" & Rows.Count).End(xlUp).Row Set Rng = .Range("C2:D" & lrw).SpecialCells(xlVisible) For Each cel In Rng.Cells SelectCase cel.Column Case3
vl = cel Case4
b = IIf(cel = "EUR", 1, b1)
s = s + vl / b EndSelect Next
s = Math.Round(s, 2)
.Range("K1") = "ВСЕГО КП на сумму: " & Format(s, "Standard") & " " & " евро." With .Range("K1")
.Font.Color = -3407872
.Font.Bold = True EndWith EndWith EndSub
Здравствуйте. Так не работают с видимыми ячейками, их только перебирают
Sub FltR() Dim qarr, lrw&, i&, b#, b1#, s#, Rng As Range, cel As Range, vl# With Лист1
s = 0
b1 = .Range("F1").Value
lrw = .Range("D" & Rows.Count).End(xlUp).Row Set Rng = .Range("C2:D" & lrw).SpecialCells(xlVisible) For Each cel In Rng.Cells SelectCase cel.Column Case3
vl = cel Case4
b = IIf(cel = "EUR", 1, b1)
s = s + vl / b EndSelect Next
s = Math.Round(s, 2)
.Range("K1") = "ВСЕГО КП на сумму: " & Format(s, "Standard") & " " & " евро." With .Range("K1")
.Font.Color = -3407872
.Font.Bold = True EndWith EndWith EndSub
Андрей не предлагал никаких методов Суть поста Андрея сводится к тому, что применяя на листе любую волатильную функцию, использовать возникающее при использовании фильтра событие пересчета листа
Андрей не предлагал никаких методов Суть поста Андрея сводится к тому, что применяя на листе любую волатильную функцию, использовать возникающее при использовании фильтра событие пересчета листа
Суть поста Андрея сводится к тому, что применяя на листе любую волатильную функцию, использовать возникающее при использовании фильтра событие пересчета листа
Serge_007, именно это я и назвал "методом". Завёл на лист функцию СЕГОДНЯ, и прикрутил макрос doober'а к событию Calculate. При использовании фильтра возникает ошибка
Суть поста Андрея сводится к тому, что применяя на листе любую волатильную функцию, использовать возникающее при использовании фильтра событие пересчета листа
Serge_007, именно это я и назвал "методом". Завёл на лист функцию СЕГОДНЯ, и прикрутил макрос doober'а к событию Calculate. При использовании фильтра возникает ошибкаXpert
doober, к сожалению, при таком способе также выскакивает ошибка(ссылается ошибку метода Special Cells объекта Range), далее файл зависает, и выйти из него можно только через диспетчер задач...
doober, к сожалению, при таком способе также выскакивает ошибка(ссылается ошибку метода Special Cells объекта Range), далее файл зависает, и выйти из него можно только через диспетчер задач...Xpert
Всем доброго времени суток! Давно уже бьюсь над задачей копирования данных из одной книги в другую, НО с учетом фильтра в одном столбце (фильтр должен быть в файле откуда копируются данные). У нас с работы просто уволился коллега, который отлично шарил в макросах, но писал довольно непростые коды мягко говоря, для понимания новичка и вот собственно некоторые коды удалось мне переварить и использовать в работе, но вот в одном из кодов наступил конкретный ступор....
Добрые и умные люди, можете, пожалуйста, подсказать где и какие правки нужно внести в код? Заранее благодарю!
'не получается у меня правильно поставить фильтр / условие в 12-ой графе (графа L в файле-доноре), чтобы в этой графе фильтровалось значение «Основной долг» и копировалась бы информация в рабочий файл с учетом этого фильтра. 'В разные места это условие пытался ставить – бестолку, на фильтр реакции либо не было, либо копировался всё равно весь массив данных или вообще ничего не копировалось, пробовал вносить всякие правки и корректировки в разные строки кода – в итоге макрос писал Debug постоянно….уже не знаю что делать…
Всем доброго времени суток! Давно уже бьюсь над задачей копирования данных из одной книги в другую, НО с учетом фильтра в одном столбце (фильтр должен быть в файле откуда копируются данные). У нас с работы просто уволился коллега, который отлично шарил в макросах, но писал довольно непростые коды мягко говоря, для понимания новичка и вот собственно некоторые коды удалось мне переварить и использовать в работе, но вот в одном из кодов наступил конкретный ступор....
Добрые и умные люди, можете, пожалуйста, подсказать где и какие правки нужно внести в код? Заранее благодарю!
'не получается у меня правильно поставить фильтр / условие в 12-ой графе (графа L в файле-доноре), чтобы в этой графе фильтровалось значение «Основной долг» и копировалась бы информация в рабочий файл с учетом этого фильтра. 'В разные места это условие пытался ставить – бестолку, на фильтр реакции либо не было, либо копировался всё равно весь массив данных или вообще ничего не копировалось, пробовал вносить всякие правки и корректировки в разные строки кода – в итоге макрос писал Debug постоянно….уже не знаю что делать…