1

我有一个宏可以将一个 Excel 工作表 (ExcelA) 中所有使用的行复制到另一个 (ExcelB):

Sub CopyFromOneXL()
Dim myBook As Workbook, newBook As Workbook

Set myBook = ThisWorkbook
Set lRowMyBook = Range("A1").SpecialCells(xlCellTypeLastCell)
Set newBook = Workbooks.Open("C:\Users\user\Desktop\EXCEL\ExcelB.xlsx")

newBook.Activate

Set lRowNewBook = Sheets("Sheet1").Range("A1").SpecialCells(xlCellTypeLastCell)
lastRowNewBook = lRowNewBook.Row
lastRowMyBook = lRowMyBook.Row
lastRowNewBook = lastRowNewBook + 1

    With newBook
    myBook.Sheets("Sheet1").Rows("1:" & lastRowMyBook).Copy .Sheets("Sheet1").Rows(lastRowNewBook)
    .Close savechanges:=True
    End With
End Sub

ExcelB 已经使用了十行(序列号从 1 到 10),我正在使用上面的宏添加另外三行数据(在 ExcelA 中)。有什么方法可以给 ExcelB 新增的三行加上序号,从 11 开始?

两张表中的行数可能会有所不同,但最终我想从它停止的地方开始将序列号添加到 ExcelB。

4

2 回答 2

0

当我添加以下代码时,它起作用了。

With newBook
myBook.Sheets("Sheet1").Rows("1:" & lastRowMyBook).Copy .Sheets("Sheet1").Rows(lastRowNewBook)
    Set newLRowNewBook = Sheets("Sheet1").Range("A1").SpecialCells(xlCellTypeLastCell)
newLastRowNB = newLRowNewBook.Row
'MsgBox newLastRowNB
For i = lastRowNewBook To newLastRowNB
    Cells(i, 1).Formula = "=Row()"
Next
.Close savechanges:=True
End With

虽然如果有 1000 行,宏需要一些时间来运行。只是想知道是否有任何其他方法可以在不使用For循环的情况下实现这一目标。

谢谢。

于 2013-09-11T08:24:40.690 回答
0

OP 希望索引增量条目,方便地,索引号与使用不同工作表中的代码复制的条目的行号匹配。与其在代码中添加这样一个带有循环的索引来复制增量,不如为它添加一个公式 ( =ROW()) 到源工作表中,然后使用现有代码自动复制。

于 2013-09-11T10:02:33.457 回答