如何在excel vba的下一行中创建新的增量参考号

如何在excel vba的下一行中创建新的增量参考号,excel,vba,Excel,Vba,我继承了一个Excel注册表,其中包含以下VBA模块。它应该基于上一行中的引用创建一个新引用,并向下复制格式。实际上,它所做的只是复制上面一行中的内容 Dim lr As Long lr = Range("A" & Rows.Count).End(xlUp).Row Range("A" & lr).AutoFill Destination:=Range("A" & lr).Resize(2) Rows(lr).Offset(0, 0).Copy Rows(lr).Off

我继承了一个Excel注册表,其中包含以下VBA模块。它应该基于上一行中的引用创建一个新引用,并向下复制格式。实际上,它所做的只是复制上面一行中的内容

Dim lr As Long
lr = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & lr).AutoFill Destination:=Range("A" & lr).Resize(2)

Rows(lr).Offset(0, 0).Copy
Rows(lr).Offset(1, 0).EntireRow.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False

我是VBA新手,对此我一无所知,有人能告诉我它想做什么,或者我如何将其更改为我需要的内容吗。

一个猜测,但我会指定以下类型参数:


让我们试着将其分解:

Rows
返回活动工作表上范围对象的集合;每个范围对象表示一行

Rows.Count
返回工作表上可能的行数。此数字取决于您使用的Excel版本;就我而言,是1048576

返回A列或A1048576中最后一个单元格的地址

返回表示列a中最后一个单元格的范围对象

调用End方法:

返回一个新的范围对象,其端点已从上一个范围的端点上移。换句话说,新的范围对象表示A列中最后使用的单元格

最后,我们希望使用row属性获得最后使用的单元格的行号;我们将把这个数字存储在lr变量中

lr = Range("A" & Rows.Count).End(xlUp).Row
让我们看下一行:

Range("A" & lr)
返回一个范围对象,该对象表示a列的单元格和lr的行号,或a列中最后使用的单元格

我们想调用AutoFill方法,将以前的一组单元格中的值填充到一组新的单元格中。在这种情况下,我们希望从上一行的单元格自动填充到下一行的单元格。我们可以通过将表示最后使用的单元格的Range对象与新单元格一起传递到Destination参数中来实现这一点

我们可以使用Resize方法获得这样一个范围,将2作为新范围中的行数传入:

并调用自动填充方法:

但是请注意,自动填充有不同的方法:我们可以自动填充与前面单元格中相同的值。为了指定要将以前的值作为一个系列来处理以生成新值,我们需要传入自动填充类型:

Range("A" & lr).AutoFill Destination:=Range("A" & lr).Resize(2), Type:=xlFillSeries
VBA参考

Excel对象模型引用

请注意,行和范围是未记录的全局对象的成员,但它们的工作方式似乎与范围对象上的相应属性相同

和属性 和属性
上面一行是什么-你能给我们一个参考号样本吗?MOC001,那么下一个是MOC0002,所以我看你决定解决这个问题,有人能告诉我它在做什么吗-@我成功了吗?此外,我也受益匪浅,因为我总是对如何使用Range属性感到困惑。现在我知道了,我成功了吗?响亮的“是”。
Range("A" & Rows.Count).End(xlUp)
lr = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & lr)
Range("A" & lr).Resize(2)
Range("A" & lr).AutoFill Destination:=Range("A" & lr).Resize(2)
Range("A" & lr).AutoFill Destination:=Range("A" & lr).Resize(2), Type:=xlFillSeries