2012-09-20 2 views
0

왜 다음 빈 셀까지 다음 전체 셀까지 데이터를 복사 한 다음 해당 셀의 데이터를 가져 와서 다시 시작합니까? 왜이 Excel VBA 스크립트가 아래쪽으로 복사되고 마지막으로 선택한 셀까지 반복됩니까?

Option Explicit 

Sub CopyDown() 

    Dim wsPOD As Worksheet 
    Dim lastrow 

    Set wsPOD = Sheets("PO Data") 

With wsPOD 
    lastrow = wsPOD.Range("F" & Rows.Count).End(xlUp).Row 
      wsPOD.Range("A2:D" & lastrow).Select 
      Selection.SpecialCells(xlCellTypeBlanks).Select 
      Selection.FormulaR1C1 = "=R[-1]C" 
    End With 
End Sub 

나는 스크립트의 대부분을 이해하지만 나는이 부분을 이해하지 않습니다

 Selection.SpecialCells(xlCellTypeBlanks).Select 
     Selection.FormulaR1C1 = "=R[-1]C" 

이 마지막 부분은 특히 나에게 횡설수설은, 누군가가 나이 제발 이해하는 데 도움이 의미를?

+0

범위'wsPOD.Range 명시

옵션을 사용하여 코드 정돈 할 수 있습니다 내 의견을 바탕으로 ("A2 : D"& lastrow)을'선택됩니다. 해당 범위 내에서 빈/빈 셀은'Selection.SpecialCells (xlCellTypeBlanks) .Select'를 사용하여 선택됩니다. 그런 다음 공백 셀에 수식' "= R [-1] C"'를 입력하여 셀을 위 셀에 설정합니다. 기본적으로 위의 셀 내용이있는 빈 셀을 채 웁니다. select/Selection 문은 필요하지 않으므로 제거 할 것입니다. – user3357963

+0

시트의 너비는 6 열이며이 중 4 줄만이 코드를 실행하고 싶습니다. 이 경우, 당신은 어떻게 그것을 할 것인가? 왜냐하면 내가 얼마나 멀리 떨어지는 지에 대한 한계가 필요하기 때문이다. –

+0

그것은 현재 4 가지로만 작동합니다. A : D - "A2 : D"& lastrow – user3357963

답변

2

는 당신이

Sub CopyDown() 

    Dim wsPOD As Worksheet 
    Dim lastrow as long 
    Dim EmptyCells as range 

    Set wsPOD = Sheets("PO Data") 

With wsPOD 
    lastrow = .Range("F" & .Rows.Count).End(xlUp).Row 
      set EmptyCells = .Range("A2:D" & lastrow).SpecialCells(xlCellTypeBlanks) 
      EmptyCells.FormulaR1C1 = "=R[-1]C" 
    End With 
End Sub 
+0

나는 코드를 좋아한다 : 달콤하고 단순하며, 내가 필요한 것을 정확히한다. 감사합니다 ... 또한 무엇을하는지 설명해 주셔서 감사합니다. –

관련 문제