我已经编写了下面的代码,但我无法通过我想要插入可变行数的行。编译器尖叫它需要一个“列表分隔符或”,其中有一个冒号。但我找不到其他的写作方式。请帮忙! =) 因此,有问题的线由两端的两颗星表示。就在它上面有一条评论线,我也试过没有成功。 另外,你会如此善良并向我解释我需要以下命令(它们也存在于有问题的行中):Shift:= xlDown,CopyOrigin:= xlFormatFromLeftOrAbove
最后,关于我如何改进代码的任何建议,经验丰富的程序员在阅读时都不会晕倒? =)
非常感谢你,
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
答案 0 :(得分:1)
我并不完全按照您要访问的内容进行操作,但存在一些语法问题。
不确定这是否是您想要的,但它修复了语法。你是否愿意
Worksheets(Blatt2).Rows("3:" & 3 + Anfangsjahr2 - Anfangsjahr1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
编辑在下面的评论中扩展OP的问题
双引号用于包含字符串。因此,通常在引用行时,可以说.Rows("3:9").Insert
这样就可以将要处理的行作为字符串提供。
在你的情况下,你想动态提供最后一行,所以我们有
我们的字符串
"3:"
从字符串转换为变量&
以及我们的变量和数学3 + Anfangsjahr2 - Anfangsjahr1
弥补.Rows("3:" & 3 + Anfangsjahr2 - Anfangsjahr1).Insert
答案 1 :(得分:0)
您需要将行号放在双引号中,然后使用&符号将变量连接到字符串:
Worksheets(Blatt2).Rows("3:" & 3 + Anfangsjahr2 - Anfangsjahr1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove