Excel VBA - 重复行

时间:2015-12-01 21:41:07

标签: excel excel-vba vba

我需要复制一个充满公式N次的行。 N由不同工作表上的行数定义。公式每行都是唯一的,但我认为autofill会处理它。

在“DestSheet”中:     第1行是标题     从第3行开始,第2行包含我想要复制“Cnt”次的行。     第2行包含对该行唯一的单元格 - = Credentials!C2     我需要第2行与第2行相同但增加行数          所以我得到= Credntials!第3行的C3和=第4行的凭据!C4     (其他公式更复杂 - 但遵循相同的模型)     当函数完成时,“DestSheet”将具有从第2行开始的“Cnt”行

我接近我在本网站上找到的代码.....

std::hex

2 个答案:

答案 0 :(得分:2)

您不需要使用自动填充循环:

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

AS ZygD解释说,由于Sub行中的变量,它不能单独运行它必须被调用。

Sub CallAddRows()
Dim rwcnt as integer
dim DestShtNme as String

rwcnt = 20
DestShtNme = "Sheet1" 'Change to your sheet.

AddRows rwcnt, DestShtNme

End Sub

我假设在你的代码中你正在迭代各种工作表并调用这个子来发送添加行。以上只是一个例子。你如何提出传递给AddRows子的两个变量取决于你。重要的是变量传递给子。

答案 1 :(得分:1)

这就是我提出的:

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' AddRows