如何在范围下插入新行,然后获取对该新行的引用,以便我可以填充它?
Dim newRow As Range
newRow = row.Offset(1).EntireRow.Insert
导致对象变量或宽度块变量未设置错误但插入了新行。但我似乎无法引用它。
第二个问题是,在上面我可以迭代范围并在该范围内插入行。插入是否会影响迭代?
答案 0 :(得分:1)
我之前的陈述不正确,因为我误解了你的想法。下面是循环遍历范围的示例,并且在满足条件时,将在循环中的当前行下方插入行。然后需要一个布尔值来跳过插入的行。
Sub InsertAfterLastRow()
Dim Rng As Range
Set Rng = Range("A1:B5") 'Arbritrary
Dim LastRow As Long
Dim InsertRow As Long
Dim Inserted As Boolean
Dim NewRow As Range
Inserted = False
For Each Row In Rng.Rows
If Inserted = False Then
If Row.Cells(1, 1).Value = "Yes" Then
Rows(Row.Row + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Set NewRow = Range(Row.Row + 1 & ":" & Row.Row + 1)
NewRow.Cells(1, 1).Value = "Inserted"
Inserted = True
Else
Row.Cells(1, 1).Value = "No"
End If
Else
'Avoid a double insert, skipping a row
Inserted = False
End If
Next
End Sub
答案 1 :(得分:0)
OMG。愚蠢的VBA语法。 ;)
Set newRow = Rows(rowNumber + 1 & ":" & rowNumber + 1)
的工作原理。重要的部分是设置关键字。
答案 2 :(得分:0)
我一直在努力解决一个类似的问题,想要在参考范围(命名范围)以下的点添加或删除可变数量的行而不影响命名范围。首先,我确定要添加(或删除)包含行数的变量的行数= addR
addR = 2 ' you'd use some logic to derive the value of addR
Rows(Range("OutputBlock").Row + 1).EntireRow.Resize(addR).insert
输出块是我想要添加行的命名范围。