Дорого всем времени суток! Имеется вот такой вот фрагмент кода (функция): [vba]
Код
Private Function GetAddresses() As Address() Dim addrs(3) As Address Dim i As Integer Dim firstCell As Range Set firstCell = Application.ActiveSheet.Range("A4") For i = 0 To 3 With firstCell addrs(i).Street = .Offset(i, 0).Value addrs(i).Building = .Offset(i, 1).Value addrs(i).Comments = .Offset(i, 2).Value End With Next i GetAddresses = addrs End Function
[/vba] в ней, как видите, есть цикл, обрабатывающий значения в конкретных ячейках. Количество ячеек задано явно - "3". Задача: необходимо сделать так, чтобы количество ячеек менялось динамически (все не пустые в данном диапазоне/столбце), НО ещё и таким образом, чтобы при выборе значений фильтром на листе, обрабатывались бы только видимые (отфильтрованные)ячейки. Есть специалисты могущие помочь в данном деле, или это не решаемая задача???
Дорого всем времени суток! Имеется вот такой вот фрагмент кода (функция): [vba]
Код
Private Function GetAddresses() As Address() Dim addrs(3) As Address Dim i As Integer Dim firstCell As Range Set firstCell = Application.ActiveSheet.Range("A4") For i = 0 To 3 With firstCell addrs(i).Street = .Offset(i, 0).Value addrs(i).Building = .Offset(i, 1).Value addrs(i).Comments = .Offset(i, 2).Value End With Next i GetAddresses = addrs End Function
[/vba] в ней, как видите, есть цикл, обрабатывающий значения в конкретных ячейках. Количество ячеек задано явно - "3". Задача: необходимо сделать так, чтобы количество ячеек менялось динамически (все не пустые в данном диапазоне/столбце), НО ещё и таким образом, чтобы при выборе значений фильтром на листе, обрабатывались бы только видимые (отфильтрованные)ячейки. Есть специалисты могущие помочь в данном деле, или это не решаемая задача???HEnogapok
Private Function GetAddresses() As Address() Dim addrs() As Address, paralast As Integer Dim Y As Range, firstCell As Range ReDim addrs(0) paralast = -1 With ActiveSheet Set Y = .Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row) End With For Each firstCell In Y.Cells.SpecialCells(xlCellTypeVisible) With firstCell paralast = paralast + 1 ReDim Preserve addrs(paralast) addrs(paralast).Street = .Offset(i, 0).Value addrs(paralast).Building = .Offset(i, 1).Value addrs(paralast).Comments = .Offset(i, 2).Value End With
Next GetAddresses = addrs End Function
[/vba]
Попробуйте так [vba]
Код
Private Function GetAddresses() As Address() Dim addrs() As Address, paralast As Integer Dim Y As Range, firstCell As Range ReDim addrs(0) paralast = -1 With ActiveSheet Set Y = .Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row) End With For Each firstCell In Y.Cells.SpecialCells(xlCellTypeVisible) With firstCell paralast = paralast + 1 ReDim Preserve addrs(paralast) addrs(paralast).Street = .Offset(i, 0).Value addrs(paralast).Building = .Offset(i, 1).Value addrs(paralast).Comments = .Offset(i, 2).Value End With