VBA переменный диапазон непустых клеток в столбце listobject - PullRequest
0 голосов
/ 24 мая 2019

У меня есть функция, которая получает Range как переменную и работает со значениями ячеек диапазона.Мне нужно передать диапазоны функции taht, построенной следующим образом:

Dim hltTbl As ListObject
Set hltTbl = ThisWorkbook.Sheets("classy").ListObjects(1)
Dim i As Integer
Dim lastrow As Integer
Dim highlightsRange As Range


'range is in highlights from 1 to the first empty
For i = 1 To hltTbl.ListRows.Count
    If hltTbl.ListColumns("highlights").DataBodyRange.iTem(i).Value = "" Then
       lastrow = i - 1
       Exit For
    End If
Next

Set highlightsRange = hltTbl.ListColumns("highlights").DataBodyRange.iTem(1).resize(lastrow,0)

Это не работает.Я притворяюсь, что строю диапазон, состоящий из всех непустых ячеек столбца списка объектов.(примечание: ячейки образуют континуум, т.е. между непустыми ячейками нет пустых ячеек).То, что я сделал, нашел первую непустую ячейку, которая будет последней ячейкой диапазона, и я попытался изменить диапазон первой ячейки столбца с помощью reshape (lastrow, 0).Это не работает.

Вопросы: а) как я могу это сделать б) почему это не работает в) (я пытаюсь не использовать фильтры, они очень болезненные)

Большое спасибо.

EDIT1: .SpecialCells (... кажется, не включает небланки, но только пробелы edit2: это работает:

 DataBodyRange.SpecialCells(xlCellTypeConstants, xlTextValues)

, но значения являются целыми числами...

1 Ответ

0 голосов
/ 24 мая 2019

Вы должны изменить размер следующим образом: .resize(lastrow, 1) вместо .resize(lastrow, 0).Причина в том, что метод "resize" принимает количество строк и столбцов желаемого размера диапазона.Любой диапазон имеет как минимум 1 строку и 1 столбец.

...