2016-08-25 3 views
1

셀이 비어 있거나 널 (null)이면 메시지와 종료 서브를 표시하는지 확인하려고합니다. 여기에 내 코드입니다 :IF Null exit sub code

With Worksheets(1).[D3:D4, D6:D14] 
    If WorksheetFunction.CountA(.Cells) = 0 Then 
     MsgBox "Nothing to generate" & vbNewLine & _ 
     "Set parameters and click generate." 
     Exit Sub 
    End If 
End With 

그러나 전체 [D3:D4, D6:D14]가 비어있는 경우 코드에만 작동합니다. 셀 중 하나라도 비어 있어도 하위로 나가기를 원합니다. 모든 세포에는 sub가 계속되기위한 내용이 필요합니다. 도와주세요.

당신은 범위 내에서 seach 필요
+0

시도 아래의 코드 –

+2

은'.CountBlank ('.C ountA (' – Slai

답변

1

또한 SpecialCells를 사용할 수 있습니다

Sub Check() 
Dim rng1 As Range 
On Error Resume Next 

With Worksheets(1).[D3:D4, D6:D14] 
Set rng1 = .SpecialCells(xlBlanks) 
    If Not rng1 Is Nothing Then 
     MsgBox "Nothing to generate" & vbNewLine & _ 
     "Set parameters and click generate." 
     Exit Sub 
    End If 
End With 

End Sub 

후속 질문

Sub Check2() 
Dim rng1 As Range 
Dim rng2 As Range 

With Worksheets(1) 
Set rng1 = .Range(.[D3:D4], .[D6:D14]) 
End With 

On Error Resume Next 
Set rng2 = rng1.SpecialCells(xlBlanks) 
On Error GoTo 0 

If Not rng1 Is Nothing Then 
    MsgBox rng1.Cells.Count - rng2.Cells.Count & " were used" 
Else 
    MsgBox "all cells used" 
End If 

End Sub 
+0

이것은 훌륭합니다. 감사! 'D3 : D4, D6 : D14'가'Nothing '이라면 현재 메시지가 표시됩니다.하지만 모든 내용이 아닌 하나의 셀에 매개 변수를 완성하기 위해 다른 메시지를 표시하고 싶습니다. 그렇게하는 방법? – Marco

+0

@marco 귀하의 후속 조치에 대한 업데이트 된 답변을 참조하십시오. – brettdj

1

, 아래의 코드를 시도 :

Sub CheckEmptyCellsinRange() 

Dim Rng  As Range 
Dim cell As Range 

Set Rng = Worksheets(1).[D3:D4, D6:D14] 

For Each cell In Rng 
    If IsEmpty(cell) Or IsNull(cell) Then 
     MsgBox "Nothing to generate" & vbNewLine & _ 
     "Set parameters and click generate." 
     Exit Sub   
    End If 

Next cell 

End Sub 
+0

셀에 의한 루핑 셀은 큰 범위의 경우 값 비싼 시간을 현명하게 처리 할 수 ​​있습니다. – brettdj

+0

당신은 맞습니다. 그러나 그의 예에서는 10 셀 미만의 범위를가집니다. –

관련 문제