在Excel

时间:2018-03-12 10:45:51

标签: vba insert range rows

我有一个Excel文件,我希望通过将选项卡中的当前行数与另一个选项卡的行数进行比较来重新调整行数。 因此,当我的范围小于我要比较的范围时,我想插入差异,以便两个范围具有相同的行数。 如果我当前的范围比删除行的范围更大,我想分别想要。

到目前为止,我有这个代码,它适用于小范围。但是当比较例如100时,1000就是粉碎。

* nbr是我的工作文件中的行数与数据库中的行数之间的绝对差值。换句话说,它将始终是要插入或删除的行数。

这是我正在使用的代码:

Dim sh1 As Worksheet
Set sh1 = ThisWorkbook.Sheets("WORKING FILE")
Dim sh2 As Worksheet
Set sh2 = ThisWorkbook.Sheets("DATABASE")
Dim nbr As Integer
Dim CellDB As Integer
Dim CellWRK As Integer
Dim i As Integer


CellDB = ThisWorkbook.Sheets("DATABASE").Range("A1").Value

CellWRK = ThisWorkbook.Sheets("WORKING FILE").Range("A1").Value

nbr = ThisWorkbook.Sheets("WORKING FILE").Range("A2").Value


If CellWRK < CellDB Then

With Sheets("WORKING FILE")
For i = 1 To nbr
        Rows(22).Insert
    Next i

    Application.DisplayAlerts = True

End With
ElseIf CellWRK > CellDB Then

With Sheets("WORKING FILE")
For i = 1 To nbr
        Rows(22).Delete
    Next i

    Application.DisplayAlerts = True

End With

1 个答案:

答案 0 :(得分:0)

我刚修改了你的If声明,试一试。

If CellWRK < CellDB Then
    For i = 1 To nbr
        CellWRK.Rows(22).Insert
    Next i

    Application.DisplayAlerts = True

ElseIf CellWRK > CellDB Then
    For i = 1 To nbr
        CellWRK.Rows(22).Delete
    Next i

    Application.DisplayAlerts = True

End If

无法使用的原因可能是您只使用Rows(22)而没有工作表参考,因此它仅引用了ActiveSheet