Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Перейти на одну видимую ячейку вниз
 
Подскажите, как можно програмно перейти в колонке с датами на одну ячейку вниз при включенном фильтре минуя скрытые (и вывести содержимое ячейки в данному случае дата - в msgbox)?
 
Код
Sub VisibleValue()
Dim iCl As Range
For Each iCl In Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Cells
  MsgBox "Ячейка: " & iCl.Address(0, 0) & ", значение: " & iCl.Value, vbOKCancel
Next
End Sub
Изменено: Sanja - 16 Авг 2019 18:24:22
Согласие есть продукт при полном непротивлении сторон.
 
Да, только не циклом, а всего лишь на одну ячейку спуститься и вывести результат.
 
На одну ячейку ниже ЧЕГО?
Цикл показан как пример перехода на одну ячейку ниже предыдущей видимой.
Вам что надо?
Согласие есть продукт при полном непротивлении сторон.
 
В файле примере я пробовал писать код - там стартую из А1. Включаю фильтр и мне нужно перейти вниз и узнать что в первой отфильтрованой ячейке, какая дата.
 
Sanja, приветствую!
Если у ТС проблема именно с циклом, то можно через Find, вроде  :D
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Цитата
Виталий Криворучко написал:
только не циклом,
А чем плох вариант с циклом? Бежим, пока не встретим видимую ячейку, считываем её значение и выходим из цикла.
 
Цитата
Jack Famous написал:
можно через Find, вроде
что значит вроде?  :D
Код
Dim res As Range
On Error Resume Next
Set res = ActiveCell.EntireColumn.SpecialCells(xlCellTypeVisible).Find(What:="*", After:=ActiveCell)
If Err = 0 Then Debug.Print res.Value
On Error GoTo 0
 
Цитата
Jack Famous написал: Если у ТС проблема именно с циклом, то можно через Find, вроде
Думаю, что внутри Find зашит такой же цикл
Согласие есть продукт при полном непротивлении сторон.
 
Цитата
Sanja написал:
Думаю, что внутри Find зашит такой же цикл
наверно, но он должен быть более быстрым по идее.
 
Можно и без цикла
Код
Sub qq()
    On Error Resume Next
    Set r = ActiveSheet.AutoFilter.Range.SpecialCells(12).Areas(2)
    If Err Then
        Err.Clear
        MsgBox ActiveSheet.AutoFilter.Range.Cells(2, 1)
    Else
        MsgBox r(1)
    End If
End Sub


Накладочка. Для массива условий работает не правильно. Правильнее так
Код
Sub ert()
    Const i = 1&
    Set r = ActiveSheet.AutoFilter.Range.Columns(i).SpecialCells(12) 
    If r.Areas(1).Rows.Count > 1 Then
        MsgBox r.Areas(1).Cells(2)
    Else
        MsgBox r.Areas(2).Cells(1)
    End If
End Sub
Изменено: RAN - 17 Авг 2019 09:55:39
 
Код
Sub rrr()
Dim A As String
  A = [a1:a3000].SpecialCells(xlVisible).Address
  If InStr(A, ",") = 0 Then
    SecCelAdr = Range(A).Cells(2).Address
  Else
    If Range(Split(A, ",")(0)).Count > 1 Then
      SecCelAdr = Range(Split(A, ",")(0)).Cells(2).Address
    Else
      SecCelAdr = Range(Split(A, ",")(1)).Cells(1).Address
    End If
  End If
Range(SecCelAdr).Select
End Sub
 
OFF
Sanja, в том-то и прикол, что ВИДИМОГО цикла нет  :D
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Код
Sub NextVisibleCell()
  Dim r&
  For r = ActiveCell.Row + 1 To Rows.Count
    If Not Rows(r).Hidden Then MsgBox Cells(r, ActiveCell.Column).Address: Exit For
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Это как раз то что я искал. Спасибо.
 
Цитата
Виталий Криворучко написал:
(и вывести содержимое ячейки в данному случае дата - в msgbox
Цитата
Ігор Гончаренко написал:
MsgBox Cells(r, ActiveCell.Column).Address
Уверены что искали именно это?  :D
 
Адрес тоже хотелось )
 
Цитата
БМВ написал:
Уверены что искали именно это?  
Уверен. Условия задачи чисто для примера (чтобы я понял принцип).
 
ну тогда что не поняли принцип #8?  ;)
 
Цитата
БМВ написал:
ну тогда что не поняли принцип #8?
#14 для МЕНЯ более понятней чем #8. Хотя и 8 я тоже взял на заметку. Спасибо. БМВ не будем дальше флудом заниматься...
 
Виталий Криворучко, а где Вы увидели флуд? Вы просили вывести значение ячейки, а Вас устроил вывод адреса. На этом и акцентировал Ваше внимание Михаил. Где флуд?
 
Цитата
Виталий Криворучко: не будем дальше флудом заниматься
слышу звон, да не знаю где он. Мало просто знать слова, нужно ещё их вставлять в тему  :D
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Цитата
Юрий М написал:
Вы просили вывести значение ячейки, а Вас устроил вывод адреса.
Ну и что? Я же перед этим сказал, что для примера просил (без разницы адрес, значение или цвет и т.д.) Зачем здесь задавать вопросы - УВЕРЕН, ПОНЯЛ? Я что здесь в школе экзамены сдаю. Я уже поблагодарил участников. Тема закрыта.
 
Виталий Криворучко, а вопросы здесь может задавать только тот, кто пришёл за помощью? Помогающие уточнять не имеют права? Именно это и пытался сделать Михаил, а Вы сразу "флуд"... Нет никакого флуда и не было.
И сбавьте обороты.
Страницы: 1
Читают тему (гостей: 1)
Наверх