2013-10-09 4 views
1

범위 아래에 새 행을 삽입 한 다음 해당 행을 채울 수 있도록 새 행에 대한 참조를 가져 오는 방법은 무엇입니까?Excel-VBA : 아래에 행을 삽입하고 Range로 새 행 가져 오기

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 출력 블록은 행을 추가 할 이름이 지정된 범위입니다.

관련 문제