VBA:插入可变数量的行

我写了下面的代码,但我不能通过一个行,我想要插入可变数量的行。 编译器尖叫,它需要一个“列表分隔符或)”,那里有一个冒号。 但是我找不到其他的写法。 请帮忙! =)所以,有问题的路线是从两端来的。 就在它上面有一条评论线,我也尝试过没有成功。 另外,你会如此善良,并解释我什么,我需要下面的命令(他们也可以在问题行中find):Shift:= xlDown,CopyOrigin:= xlFormatFromLeftOrAbove

最后,关于如何改进代码的任何build议,有经验的程序员在阅读时都不会感到晕眩? =)

巨大的提前谢谢你,

Option Explicit Dim ws As Worksheet Dim Blatt1, Blatt2 As String Dim Anfangsjahr1, Anfangsjahr2 As Integer Dim reporting_Jahr1, reporting_Jahr2 As String Public Sub Dreiecke() For Each ws In Worksheets If ws.Name Like "RVA_H*" Then If IsEmpty(Blatt1) = False Then Blatt2 = ws.Name Anfangsjahr2 = ws.Range("A3").Value reporting_Jahr2 = ws.Range("A1").Value Else Blatt1 = ws.Name Anfangsjahr1 = ws.Cells(3, 1).Value reporting_Jahr1 = ws.Cells(1, 1).Value GoTo X End If Else: GoTo X End If If reporting_Jahr1 <> reporting_Jahr2 Then MsgBox "Dreiecke von unterschiedlichen Jahren" Exit Sub ElseIf reporting_Jahr1 = reporting_Jahr2 Then If Anfangsjahr1 < Anfangsjahr2 Then 'Sheets(Blatt2).Rows(3:3+Anfangsjahr2-Anfangsjahr1).EntireRow.Insert **Worksheets(Blatt2).Rows(3: 3 + Anfangsjahr2 - Anfangsjahr1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove** ElseIf Anfangsjahr1 > Anfangsjahr2 Then Worksheets(Blatt1).Rows(3:3+Anfangsjahr1-Anfangsjahr2).Insert Shift:=xlDown ElseIf Anfangsjahr1 = Anfangsjahr2 Then GoTo X End If End If X: Next ws End Sub 

我没有完全按照你想要到达的地方,但是有一些语法问题。

不知道这是你想要的,但它修复了语法。 你想反弹吗?

 Worksheets(Blatt2).Rows("3:" & 3 + Anfangsjahr2 - Anfangsjahr1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

编辑在下面的评论中扩大OP的问题
双引号用来包围一个string。 所以通常当你引用行时,你可以说.Rows("3:9").Insert这是提供你想要使用的行作为string。
在你的情况下,你想dynamic提供最后一行,所以我们有

我们的string"3:"
从string到variables&
和我们的variables和math3 + Anfangsjahr2 - Anfangsjahr1

组成.Rows("3:" & 3 + Anfangsjahr2 - Anfangsjahr1).Insert

您需要将行号放在双引号中,然后使用&string将variables连接到string:

 Worksheets(Blatt2).Rows("3:" & 3 + Anfangsjahr2 - Anfangsjahr1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove