2013-10-09 35 views
1

如何在範圍下插入新行,然後獲取對該新行的引用以便填充它?Excel-VBA:在下面插入行並獲取新行作爲範圍

Dim newRow As Range 
newRow = row.Offset(1).EntireRow.Insert 

導致的對象變量或寬度塊變量未設置錯誤,但新的行被插入。但我似乎無法得到它的參考。

第二個問題是,在上面我可以遍歷範圍並將行插入該範圍。插入會影響迭代嗎?

+0

你如何迭代範圍? – jmstoker

+0

'對於rng.Rows中的每一行...' –

回答

0

OMG。愚蠢的VBA語法。 ;)

Set newRow = Rows(rowNumber + 1 & ":" & rowNumber + 1) 

的作品。重要的部分是Set關鍵字。

+0

你一定會喜歡編譯器的警告 – jmstoker

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 
+0

我不想選擇它,我想讓現在的行成爲一個範圍對象,那就是總是失敗的。 –

+0

我包含了select來顯示顯示哪一行被插入。你想如何填充行? – jmstoker

+0

編程,這就是爲什麼我需要一個參考。 'Dim newRow As Range'然後'newRow = Rows(row.row + 1&「:」&row.row + 1)'會導致變量未設置錯誤。 –

0

我一直在做一個類似的問題,希望在不影響命名範圍的情況下,在參考範圍(命名範圍)以下的某個點添加或刪除可變數量的行。首先我確定要添加(或刪除)有多少行的行,其中包含行數= addR

addR = 2 ' you'd use some logic to derive the value of addR Rows(Range("OutputBlock").Row + 1).EntireRow.Resize(addR).insert 輸出塊是我想要添加行的命名範圍。