2016-10-28 3 views
0

어제 similar question에 특정 열 목록 내의 셀 범위를 채우도록 요청했습니다. 내 코드의 측면은 완벽하게 작동하지만 삽입 된 행을 삭제하는 명확한 매크로를 만들려고합니다.특정 열의 빈 셀에 특정 셀 범위를 지우는 매크로 지우기

새로 삽입 된 모든 행은 열 N에 빈 셀을 포함하므로 열 N의 모든 셀을 검색하고 공백을 찾은 다음 N 및 Y 열 사이의 행을 삭제하려고합니다. 이것은 내가 가진 것입니다. 지금까지,하지만 그것을 실행할 때 아무것도하지 않습니다?

도움을 주시면 대단히 감사하겠습니다.

Sub Clear_PCOTCS() 
    Dim myLastRow As Long 
    Dim myRow As Long 

    Application.ScreenUpdating = False 
    myLastRow = Cells(Rows.Count, "N").End(xlUp).Row 
    For myRow = myLastRow To 1 Step -1 
     If Len(Cells(myRow, "N")) = 1 And Cells(myRow, "N") = "" Then 
      Range(Cells(myRow + 1, "N"), Cells(myRow + 1, "Y")).Delete Shift:=xlDown 'CopyOrigin:=xlFormatFromLeftOrAbove 
     End If 
    Next myRow 
    Application.ScreenUpdating = True 
End Sub 
+2

"N"셀의 길이는 1 * 및 * 비어있을 수 없습니다. 그 라인에서 당신은 무엇을 테스트하고 있습니까? –

+0

감사합니다, 나는 그것을 완전히 놓쳤습니다. 해당 코드 줄을 으로 업데이트했습니다. Cell (myRow, "N") = ""Then 그러나 다음 줄에 오류가 발생했습니다. –

+0

그 중 'Shift : = xlDown'이 원인 일 수 있습니다. 오류가 발생하면 해당 코드는 아무 것도하지 않습니다. – AugustoQ

답변

1

잘못된 enum을 (를) Range.Delete (으)로 전달하여 오류가 발생했습니다. XlDeleteShiftDirection 값을 예상하고이를 XlDirection으로 전달합니다. xlShiftUpxlUp은 같은 값을 공유하지만 xlDown (-4121)은 유효하지 않은 XlDeleteShiftDirection입니다.

"N"열의 셀이 비어있을 때 모든 행 (열 "N"과 "Y"사이)을 삭제하면됩니다. 먼저, 삭제하려는 항목의 Range 모양을 기준으로 기본값이 xlShiftUp이어야하며 매개 변수를 생략하면됩니다. 둘째, 당신은 당신이 여기에 적용하고있는 오프셋을 제거해야합니다

Range(Cells(myRow + 1, "N"), Cells(myRow + 1, "Y")).Delete 

당신이 아래가 아닌 하나를 테스트하는 행을 삭제합니다. 다음과 같은 것을 찾아야합니다.

Sub Clear_PCOTCS() 
    Dim myLastRow As Long 
    Dim myRow As Long 

    Application.ScreenUpdating = False 
    myLastRow = Cells(Rows.Count, 14).End(xlUp).Row 
    For myRow = myLastRow To 1 Step -1 
     If Cells(myRow, 14).Value = vbNullString Then 
      Range(Cells(myRow, 14), Cells(myRow, 25)).Delete 
     End If 
    Next myRow 
    Application.ScreenUpdating = True 
End Sub 
+0

고맙습니다. 그것은 완벽하게 작동했지만 불행히도 그 범위의 셀에있는 수식을 삭제했습니다. 공백 N 셀 값이 있지만 누락 된 수식이있는 행만 삭제하는 방법이 있습니까? –

+0

@ B.Price - 빈 문자열을 반환하는 수식 또는 * all * 열이 비어있는 행만 포함하는 N 열의 셀을 의미합니까? – Comintern

+0

죄송합니다. 매크로를 실행하기 전에 N10 : R500의 셀 범위에 시트의 다른 위치에 데이터가 입력 될 때마다 각 셀에 수식이 적용됩니다. 그런 다음 N과 R 열 사이에 새로운 행을 입력하는 매크로가 있습니다.MY clear 매크로는 수식이있는 빈 행이 아닌 추가 된 행을 지우려고합니다. 두 매크로를 모두 사용하기 전에 시트를 다시 원래 상태로 되돌립니다. 그래서 내 명확한 매크로 ShiftUp 논리를했습니다. –

관련 문제