Excel VBA-重复行
我需要将一行公式复制N次。N由不同图纸上的行数定义。每行的公式都是唯一的,但我认为autofill可以处理这个问题 在“数据表”中: 第1行是标题 第2行有一行我想复制“Cnt”时间,从第3行开始。 第2行的单元格对于第-=行是唯一的!C2 我需要第2行与第2行相同,但增加行号 这样我就可以拿到证书了!第3行的C3和=凭证!第4排C4 (其他公式更复杂,但遵循相同的模型) 函数完成后,“DestSheet”将有第2行开始的“Cnt”行 我很接近我在这个网站上找到的代码Excel VBA-重复行,excel,vba,Excel,Vba,我需要将一行公式复制N次。N由不同图纸上的行数定义。每行的公式都是唯一的,但我认为autofill可以处理这个问题 在“数据表”中: 第1行是标题 第2行有一行我想复制“Cnt”时间,从第3行开始。 第2行的单元格对于第-=行是唯一的!C2 我需要第2行与第2行相同,但增加行号 这样我就可以拿到证书了!第3行的C3和=凭证!第4排C4 (其他公式更复杂,但遵循相同的模型) 函数完成后,“DestSheet”将有第2行开始的“Cnt”行 我很接近我在这个网站上找到的代码 Sub AddRows(C
Sub AddRows(Cnt As Integer, DestName As String)
Dim DestSheet As Worksheet
Dim i As Integer
Set DestSheet = Worksheets(DestName)
For i = 1 To Cnt
Sheets(DestName).cell(i + 2, 1).AutoFill _
Destination:=Range(LastRow)
Next i
End Sub ' AddRows
您不需要使用自动填充循环:
Sub AddRows(Cnt As Integer, DestName As String)
Dim DestSheet As Worksheet
Set DestSheet = Worksheets(DestName)
DestSheet.Cells(2, 1).AutoFill _
Destination:=DestSheet.Cells(2, 1).Resize(Cnt)
End Sub
以上内容将把A2填充到CNT中的行数。如果你想把第2行填得满满的,用这个
Sub AddRows(Cnt As Integer, DestName As String)
Dim DestSheet As Worksheet
Set DestSheet = Worksheets(DestName)
Dim colcnt As Long
With DestSheet
colcnt = .Cells(2, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(2, 1), .Cells(2, colcnt)).AutoFill _
Destination:=.Range(.Cells(2, 1), .Cells(2, colcnt)).Resize(Cnt)
End With
End Sub
正如ZygD所解释的,由于子行中的变量,它不能单独运行,必须调用它
Sub CallAddRows()
Dim rwcnt as integer
dim DestShtNme as String
rwcnt = 20
DestShtNme = "Sheet1" 'Change to your sheet.
AddRows rwcnt, DestShtNme
End Sub
我假设在您的代码中,您正在迭代各种工作表,并调用此sub发送以添加行。以上只是一个例子。如何将这两个变量传递到AddRows子系统取决于您。重要的一点是将变量传递给子对象。您不需要使用自动填充循环:
Sub AddRows(Cnt As Integer, DestName As String)
Dim DestSheet As Worksheet
Set DestSheet = Worksheets(DestName)
DestSheet.Cells(2, 1).AutoFill _
Destination:=DestSheet.Cells(2, 1).Resize(Cnt)
End Sub
以上内容将把A2填充到CNT中的行数。如果你想把第2行填得满满的,用这个
Sub AddRows(Cnt As Integer, DestName As String)
Dim DestSheet As Worksheet
Set DestSheet = Worksheets(DestName)
Dim colcnt As Long
With DestSheet
colcnt = .Cells(2, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(2, 1), .Cells(2, colcnt)).AutoFill _
Destination:=.Range(.Cells(2, 1), .Cells(2, colcnt)).Resize(Cnt)
End With
End Sub
正如ZygD所解释的,由于子行中的变量,它不能单独运行,必须调用它
Sub CallAddRows()
Dim rwcnt as integer
dim DestShtNme as String
rwcnt = 20
DestShtNme = "Sheet1" 'Change to your sheet.
AddRows rwcnt, DestShtNme
End Sub
我假设在您的代码中,您正在迭代各种工作表,并调用此sub发送以添加行。以上只是一个例子。如何将这两个变量传递到AddRows子系统取决于您。重要的一点是将变量传递给sub。这就是我想到的:
sub x()
NbrRows = Sheets(SrcName).Range("A" & Rows.Count).End(xlUp).Row ' get the number of rows on the sheet to know how many rows to add to the dest sheet
If NbrRows > 1 Then
Call AddRows(NbrRows, DestName)
End If
end sub
Sub AddRows(Cnt As Integer, DestName As String)
Dim DestSheet As Worksheet
Dim Dest As String
Set DestSheet = Worksheets(DestName)
' DestSheet.Activate
Dest = "3:" & Cnt
Sheets(DestName).Rows("2:2").Select
Selection.Copy
Sheets(DestName).Rows(Dest).Select
Sheets(DestName).Paste
Sheets(DestName).Range("A2").Select
Application.CutCopyMode = False
End Sub添加行这是我想到的:
sub x()
NbrRows = Sheets(SrcName).Range("A" & Rows.Count).End(xlUp).Row ' get the number of rows on the sheet to know how many rows to add to the dest sheet
If NbrRows > 1 Then
Call AddRows(NbrRows, DestName)
End If
end sub
Sub AddRows(Cnt As Integer, DestName As String)
Dim DestSheet As Worksheet
Dim Dest As String
Set DestSheet = Worksheets(DestName)
' DestSheet.Activate
Dest = "3:" & Cnt
Sheets(DestName).Rows("2:2").Select
Selection.Copy
Sheets(DestName).Rows(Dest).Select
Sheets(DestName).Paste
Sheets(DestName).Range("A2").Select
Application.CutCopyMode = False
End Sub添加行什么是
范围(LastRow)
您知道如何使用您的子行
?您知道为了调用它,您需要创建一个单独的子例程吗?是的-这是一个将由其他子例程调用的子例程,这就是我传入参数的原因。我是一个老的C程序员(Visual C,C++等)。但对VBA来说是新的。我正在为一些方法和它们的工作原理而挣扎。有什么理由我不应该使用被调用的子程序吗?什么是Range(LastRow)
你知道如何使用你的sub
?您知道为了调用它,您需要创建一个单独的子例程吗?是的-这是一个将由其他子例程调用的子例程,这就是我传入参数的原因。我是一个老的C程序员(Visual C,C++等)。但对VBA来说是新的。我正在为一些方法和它们的工作原理而挣扎。有什么理由我不应该使用所谓的子程序吗?现在它更值得一试!答案是正确的,但我只是怀疑OP是否知道如何调用这种sub(他说他在这个网站上找到了代码,但他没有说他知道如何使用它)。它需要说明参数,并且只能从另一个子公司进行@ZygD是的,我假设OP知道他们在做什么,但我在编辑中添加了一个快速的简介。现在它更值得投票!答案是正确的,但我只是怀疑OP是否知道如何调用这种sub(他说他在这个网站上找到了代码,但他没有说他知道如何使用它)。它需要说明参数,并且只能从另一个子系统执行@ZygD是的,我假设OP知道他们在做什么,但我在编辑中添加了一个快速的简介。