5

我正在尝试创建一个macro选择最后一行和最后一列的范围。

例如,我想从电子表格中选择 1、2、3、4,然后删除选择。

数据:

John  | 10 | 10 | 10
Smith | 5  | 5  | 5
Fred  | 8  | 8  | 8 
1     | 2  | 3  | 4

这是我的代码,它只选择 A 列的最后一行。(选择 1 并将其删除)。我需要它来选择 1 到 4 并删除整行。

Range("A" & Rows.Count).End(xlUp).Select
Selection.Delete Shift:=xlUp
4

3 回答 3

15

这是你正在尝试的吗?我已经对代码进行了注释,以便您理解它不会有任何问题。

Sub Sample()
    Dim ws As Worksheet
    Dim lRow As Long, lCol As Long
    Dim rng As Range

    '~~> Set this to the relevant worksheet
    Set ws = [Sheet1]

    With ws
        '~~> Get the last row and last column
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row
        lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column

        '~~> Set the range
        Set rng = .Range(.Cells(lRow, 1), .Cells(lRow, lCol))

        With rng
            Debug.Print .Address
            '
            '~~> What ever you want to do with the address
            '
        End With
    End With
End Sub

顺便说一句,我假设LastRow所有行都相同,列也一样。如果不是这种情况,那么您将不得不使用.Find查找最后一行和最后一列。你可能想看这个

于 2013-09-23T05:57:55.900 回答
5

最简单的修改(对您问题中的代码)是这样的:

    Range("A" & Rows.Count).End(xlUp).Select
    Selection.EntireRow.Delete

可以简化为:

    Range("A" & Rows.Count).End(xlUp).EntireRow.Delete
于 2014-07-15T20:13:55.973 回答
0

另一种简单的方法:

ActiveSheet.Rows(ActiveSheet.UsedRange.Rows.Count+1).Select    
Selection.EntireRow.Delete

或更简单:

ActiveSheet.Rows(ActiveSheet.UsedRange.Rows.Count+1).EntireRow.Delete
于 2020-04-13T00:09:50.873 回答