如何在範圍下插入新行,然後獲取對該新行的引用以便填充它?Excel-VBA:在下面插入行並獲取新行作爲範圍
Dim newRow As Range
newRow = row.Offset(1).EntireRow.Insert
導致的對象變量或寬度塊變量未設置錯誤,但新的行被插入。但我似乎無法得到它的參考。
第二個問題是,在上面我可以遍歷範圍並將行插入該範圍。插入會影響迭代嗎?
如何在範圍下插入新行,然後獲取對該新行的引用以便填充它?Excel-VBA:在下面插入行並獲取新行作爲範圍
Dim newRow As Range
newRow = row.Offset(1).EntireRow.Insert
導致的對象變量或寬度塊變量未設置錯誤,但新的行被插入。但我似乎無法得到它的參考。
第二個問題是,在上面我可以遍歷範圍並將行插入該範圍。插入會影響迭代嗎?
OMG。愚蠢的VBA語法。 ;)
Set newRow = Rows(rowNumber + 1 & ":" & rowNumber + 1)
的作品。重要的部分是Set關鍵字。
你一定會喜歡編譯器的警告 – jmstoker
我之前的陳述是不正確的,因爲我誤解了你正在嘗試做的事情。下面是循環遍歷一個範圍的示例,在滿足條件時,將在循環中的當前行下插入一行。需要一個布爾值來跳過插入的行。
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
我不想選擇它,我想讓現在的行成爲一個範圍對象,那就是總是失敗的。 –
我包含了select來顯示顯示哪一行被插入。你想如何填充行? – jmstoker
編程,這就是爲什麼我需要一個參考。 'Dim newRow As Range'然後'newRow = Rows(row.row + 1&「:」&row.row + 1)'會導致變量未設置錯誤。 –
我一直在做一個類似的問題,希望在不影響命名範圍的情況下,在參考範圍(命名範圍)以下的某個點添加或刪除可變數量的行。首先我確定要添加(或刪除)有多少行的行,其中包含行數= addR
addR = 2 ' you'd use some logic to derive the value of addR Rows(Range("OutputBlock").Row + 1).EntireRow.Resize(addR).insert
輸出塊是我想要添加行的命名範圍。
你如何迭代範圍? – jmstoker
'對於rng.Rows中的每一行...' –