Я пытаюсь получить в объект диапазона только видимые ячейки определенных столбцов таблицы ListObject.
Похоже, это не работает.
dim rng as range
with activesheet.listobjects("Tab_data").databodyrange
set rng=.specialcells(xlcelltypevisible)
end with
но это работает, когда я выбираю весь диапазон, а затем смещаю 1-й столбец, чтобы выбрать другие 2 обязательных столбца!
dim rng as range
with activesheet.usedrange
Set rng = .Offset(1, 1).Resize(.Rows.Count-1, .Columns.Count-1).SpecialCells(xlCellTypeVisible)
end with
но я не могу использовать приведенное выше в формуле, поскольку моя формула относится только к 2 столбцам в листобъекте, показанном ниже:
Формула UDF на листе:
=TagCloud(RngWrdLst as Range)
и я использую его как:
=TagCloud(tab_data[[Brands]:[Index]])
Как вы можете видеть на изображении, мне нужны только видимые диапазоны ячеек из столбцов «Бренды» и «Индекс», а не ячейки из столбца «КОЛОНКА».
Итак, видимые диапазоны, которые я хотел бы иметь:
"$B$2:$C$3,$B$45:$C$45,$B$75:$C$78"
редактировать для @Jeeped:
Если у меня есть функция UDF, которая вызывается из ячейки листа и передается диапазон ListObject столбцов B и C (только эти столбцы, а не весь диапазон данных), то как мне найти видимый диапазон RngWrdLst?
e.g.
звонок с листа:
=TagCloud(tab_data[[Brands]:[Index]])
Определение функции:
Function TagCloud(RngWrdLst As Range)
Dim VisibleRng As Range
With RngWrdLst
Set VisibleRng = Intersect(.SpecialCells(xlCellTypeVisible), Union(.Columns(2), .Columns(3)))
Debug.Print VisibleRng.Address(0, 0)
End With
' do something with the visibleRng......
End Function
Кстати, RngWrdLst будет содержать 2 столбца B и C. Итак, как мне изменить ваш код и получить только видимый диапазон из функции?