Страницы: 1
RSS
Активация ячейки снизу, VBA
 
Привет! Помогите решить задачу: в книге много листов, в каждом листе очень много строк с данными (до 10 000 строк). Ежедневно в таблицы вносятся изменения, есть столбец подкачки с изменениями, его надо копировать как значение в соседний столбец ИТОГО. В этом столбце ИТОГО есть промежуточные формулы ИТОГО ЗА МЕСЯЦ, поэтому просто весь столбец с изменениями нельзя скопировать и вставить как значения в ИТОГО. Я делаю сортировку по отклонениям и вручную каждое значение копирую в соседний столбец ИТОГО.
есть ли функция VBA для активации ячейки следующей снизу ВИДИМОЙ (после фильтра)
 
Offset не совсем подходит, тк он спускается на ячейку снизу, даже если она отфильтрована. А ввиду большого количества данных пробегаться каждой строки на условие видима/невидима будет тормозить систему.
нужен именно аналог стрелки ВНИЗ на клавиатуре! Спасибо!
Изменено: towelie - 04.07.2015 11:16:06
 
Ну хоть какой-никакой, плохонький  пример покажите
Согласие есть продукт при полном непротивлении сторон
 
аналог стрелки вниз на vba : range().end(xldown)
вру - это аналог ctrl+down - тогда:
Код
 With Лист1.AutoFilter.Range: .Offset(.Rows.Count).Resize(1).Select: End With
Изменено: Слэн - 04.07.2015 13:48:21
Живи и дай жить..
 
Цитата
towelie написал: нужен именно аналог стрелки ВНИЗ на клавиатуре!
Собсно
Код
Application.SendKeys "{Down}"
но это ненадежный способ, который применяется в самом крайнем случае. Если в момент работы команды активным окажется какое-либо другое окно (напр. системное сообщение), то "нажание кнопки" уйдет туда.
Цитата
towelie написал:
есть ли функция VBA для активации ячейки следующей снизу ВИДИМОЙ (после фильтра)
Лучше всего перебрать диапазон видимых ячеек, напр. в 1 столбце автофильтра
Код
Dim c As Range
With ActiveSheet.AutoFilter.Range.Columns(1)
  For Each c In .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible)
    c.Select 'например
  Next
End With
Чтобы перейти от ячейки с к след. видимой:
Код
Set c = Range(c.Offset(1), Cells(Rows.Count, c.Column)).SpecialCells(xlCellTypeVisible)(1)
 
Sanja,Слэн, Казанский, вот пример! Можете написать полностью код... Application.SendKeys "{Down}" почему-то вообще ничего не делает. Может вообще другим путем надо решать эту задачу? Только не надо перебирать каждую ячейку - их очень много, а вносить может быть нужно всего 1.
 
Вариант
Код
Sub qq()
    With ActiveSheet.AutoFilter.Range.SpecialCells(12)
        If .Offset(1).Cells(1).EntireRow.Hidden Then
            .Areas(2).Cells(1).Select
        Else
            .Offset(1).Cells(1).Select
        End If
    End With
End Sub
 
RAN, вот это подошло! Спасибо огромное!
Страницы: 1
Читают тему
Наверх