查找电子表格中最后使用的单元格

时间:2013-11-14 06:33:38

标签: excel excel-vba vba

我需要你的帮助来自动化一个MIS报告。

描述:每天我们将通过下载GL中的未清项目来传播MIS。订单项总数不会每天变化。我创建了一个宏,我从第一个项目到最后一个项目(5800行项目)中选择了范围。但是在第2天它会增加到6500,因为我只选择了5800 ..系统显示错误。而不是特定的范围选择我们可以修复一些像10000项目的东西?或系统应根据交易次数自动选择整个范围。

Range("C5881").Select

2 个答案:

答案 0 :(得分:0)

如果在下载之前删除工作表中的行,则UsedRange()应在下载后返回您要查找的内容。请注意,您不能只删除前几天行的内容,需要删除行。注释中的链接显示了一种查找“最后一行”的方法,如果您只删除单元格的内容而留下空行。

以下是使用Siddharth方法和UsedRange的一些测试代码:

Sub x()
With Sheets("Sheet1")
    Debug.Print .UsedRange.Address
    Debug.Print .UsedRange.Cells.Count
    If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
        lastrow = .Cells.Find(What:="*", _
                      After:=.Range("A1"), _
                      Lookat:=xlPart, _
                      LookIn:=xlFormulas, _
                      SearchOrder:=xlByRows, _
                      SearchDirection:=xlPrevious, _
                      MatchCase:=False).Row
    Else
        lastrow = 1
    End If
    Debug.Print lastrow
    .UsedRange.Select
End With

End Sub

请注意,UsedRange()将计算带格式的单元格和空单元格。将一些单元格添加到sheet1并运行代码。删除底行中单元格的内容,看看结果如何变化。

答案 1 :(得分:0)

我得到了答案

通过使用以下代码,我能够得到结果......我要感谢所有在线程上回应的人

将wksSheet作为工作表 Dim rng as Range

With wksSheet
    LastRow = .Range("A1").End(xlDown).Row
    LastCol = .Range("A1").End(xlToRight).Column
    Set rng = .Range("A1", .Cells(LastRow, LastCol))
End With

    LastRow = .Range("A1").End(xlDown).Row  or        LastRow = .Range("A1048576").End(xlUp).Row