0

我正在尝试制作一个宏来帮助我格式化一些文件,但每个文件都有不同的行数(但总是相同的列数)。我将最后一个范围定义为99999因为我不知道如何使宏识别带有一些数据的最后一行并停在那里。

有人可以帮忙吗?

谢谢

  Rows("1:26").Select
    Selection.Cut
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Paste
    Range("C16").Select
    Sheets("teste").Select
    Selection.Delete Shift:=xlUp
    Range("I3:N99999").Select
    Selection.Cut
    Range("I1").Select
    ActiveSheet.Paste
    Range("P3:P99999").Select

也尝试并取得了成功:

    Dim Nb_Rows As Integer
Nb_Rows = WorksheetFunction.CountA(Range("H:H"))
For i = 1 To Nb_Rows
Range("I" & i).Value = Range("H" & i).Value + Range("F" & i).Value
Next i
4

1 回答 1

2

你可以使用这样的东西来找到最后一行

lastRow = Range("N" & Rows.Count).End(xlUp).Row

然后使用字符串连接在范围对象中使用 lastRow:

rangeIN = Range("I3:N" & lastRow)

在此处输入图像描述

这是我用于此示例程序的代码:

Sub SelectRange()
    Dim rangeIN As Range
    lastRow = Range("N" & Rows.Count).End(xlUp).Row
    Set rangeIN = Range("I3:N" & lastRow)
    rangeIN.Select
End Sub

您将要使用的确切代码取决于具体情况。例如,如果您知道在 N 列中总会有至少一行数据,如果最后一行可能在另一列(如 M)中,等等。所以这取决于您将拥有的一些可变因素进行测试以使您的宏可靠地工作。我建议按照 Stax 的建议查看此问题以获取更多信息。

PS你不需要选择一个范围来复制和粘贴它。这是一种常见的误解,会增加效率。你通常可以使用这样的东西:

Sheet2.Range("A1:B2").Value2 = Sheet1.Range("A1:B2").Value2
于 2020-07-01T01:58:20.937 回答