我对范围进行了过滤,可以管理主题,但是找不到过滤范围之外的第一个未使用的单元格。
看一下我的初始类的代码:
Public Sub init(rowList As Range, Optional hasHeader As Boolean = True)
Dim rw As Range
Dim i As Integer
Dim k As Integer
Set aa.rowsList = rowList
For i = 1 To aa.rowsList.Areas.count
k = k + aa.rowsList.Areas(i).rows.count
Next
If k < aa.blockSize Then
k = k + aa.blockSize
Else
k = k + aa.blockSize * 2
End If
ReDim aa.rowDataArray(0 To k) As Range
i = 0
For Each rw In aa.rowsList
If i = 0 And hasHeader And aa.rowHeader Is Nothing Then
Set aa.rowHeader = rw
Else
Set aa.rowDataArray(i) = rw
i = i + 1
End If
Next
k = aa.rowsList.rows(65536).End(xlUp).Row + 1
Set aa.rowDataArray(i) = aa.rowsList.rows(k).EntireRow
Set rw = Nothing
aa.count = i
aa.rowCursor = -1
End Sub
行列表为:myWorkSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).rows
所以我的过滤器仅返回指令aa.rowsList.rows(65536).End(xlUp).Row '--> 1
的1行(标头)
但是我需要确定未使用的第一行,可能是2544(工作表中有很多行)。
有没有比循环遍历一列所有单元格更有效的想法了?
P.S。 如果我删除了过滤器,那么它可以工作,但是由于过滤器应用于类之外,因此不正确。
答案 0 :(得分:0)
您可以尝试:
Public Function FindLastUnusedCell(rowList As Range)
'Count the total rows (Office 2003 has 65500, Office and up has 1048576)
totalrows = Rows.Count
FindLastUnusedCell = Cells(totalrows, rowList.Column).End(xlUp).Offset(1, 0).Row
End Function
我希望这会有所帮助! 干杯!