Sub Real_LastRow()
Rem ====确定真正的最后一行
Rem ====先用定位的方法找到工作表中的最后一个单元格
Selection.SpecialCells(xlCellTypeLastCell).Select
flag = False
Rem ====向上循环判断是否是空行
Do While flag = False
Rem ====如果是第一行,退出循环,否则后面的Offset语句向上移动时会出错
If ActiveCell.Row = 1 Then
Exit Do
End If
Rem ====判断当前行是不是空行
Selection.End(xlToLeft).Select
temp1 = IsEmpty(ActiveCell.Value)
Selection.End(xlToRight).Select
temp2 = IsEmpty(ActiveCell.Value)
If temp1 = True And temp2 = True Then
Rem ====如果是空行则选择上一行
Selection.Offset(-1, 0).Select
Else
Rem====如果不是空行,说明已经是真正的最后一行,退出循环
flag = True
Exit Do
End If
Loop
Rem====把最后一行的行号赋给一个变量
row_last = ActiveCell.Row
Cells(row_last, 1).Select
End Sub
Rem ====确定真正的最后一行
Rem ====先用定位的方法找到工作表中的最后一个单元格
Selection.SpecialCells(xlCellTypeLastCell).Select
flag = False
Rem ====向上循环判断是否是空行
Do While flag = False
Rem ====如果是第一行,退出循环,否则后面的Offset语句向上移动时会出错
If ActiveCell.Row = 1 Then
Exit Do
End If
Rem ====判断当前行是不是空行
Selection.End(xlToLeft).Select
temp1 = IsEmpty(ActiveCell.Value)
Selection.End(xlToRight).Select
temp2 = IsEmpty(ActiveCell.Value)
If temp1 = True And temp2 = True Then
Rem ====如果是空行则选择上一行
Selection.Offset(-1, 0).Select
Else
Rem====如果不是空行,说明已经是真正的最后一行,退出循环
flag = True
Exit Do
End If
Loop
Rem====把最后一行的行号赋给一个变量
row_last = ActiveCell.Row
Cells(row_last, 1).Select
End Sub
不是真正的最后一行
Private Sub CommandButton1_Click()
temp = 0
For i = 1 To 256
a = Sheets("sheet1").Cells(65536, i).End(xlUp).Row
If a > temp Then temp = a
Next
MsgBox temp
End Sub
a = ActiveSheet.UsedRange.Rows(n).Row这个简单而且保险,前面使用A65536的有可能出问题的
你试一下吧,我不晓得你是不是这个意思
唉,这些都太麻烦了,写一个我自己用的: n = ActiveSheet.UsedRange.Rows.Count
a = ActiveSheet.UsedRange.Rows(n).Row 这个简单而且保险,前面使用A65536的有可能出问题的
正解
a = ActiveSheet.UsedRange.Rows(n).Row 得到的不是真正不为空值的一行,楼主的才是正解
谢谢了
不过进行相关搜索时找到
而且我觉得LZ的代码不能把隐藏行也计算在内
bobjones的代码短小,但是能将隐藏行也计算在内