2017-11-23 12 views
0

私は私の質問についてたくさんの調査をしましたが、必要な答えを見つけることができませんでした。VBAループスルー範囲と完全な範囲が空である場合の出力

テーブルA1:DT97138があります。この表の中で、1行のすべてのセルが空の場合、セルB2からDT2まで、行ごとにチェックします。次に、次のセルDU2に "Empty"または "Not Empty"を出力します。その後、3行目、4行目、97138行目(DU2、DU3などの行ごとに同じ結果行を出力)で同じことを行います。

以下に示すように、特定の1行に対してこれを実行する方法を見つけましたが、行ごとに範囲全体を繰り返し処理する方法がわかりません。

Sub rowEmpty() 

    Dim rng As Range, r As Range 
    Set rng = Range("B2:DT97138") 

    If WorksheetFunction.CountA(Range("B2:DT2")) = 0 Then 
     Cells(2, 125) = "Empty" 
    Else 
     Cells(2, 125) = "Not Empty" 
    End If 

End Sub 

ありがとうございました!

答えて

2

あなたはうまくいきます。このような範囲をループするだけです。

Sub rowEmpty() 
    Dim rng As Range, r As Range 
    Set rng = Range("B2:DT97138") 

    For Each r In rng.Rows 
     If WorksheetFunction.CountA(r) = 0 Then 
      Cells(r.Row, 125) = "Empty" 
     Else 
      Cells(r.Row, 125) = "Not Empty" 
     End If 
    Next r 
End Sub 
+0

素晴らしい:-)、ありがとうございました! – Robin

1

最後の列に一度あなたの数式を入力します:

With Range("DU2:DU97138") 
    .Formula = "=IF(COUNTA(B2:DT2)=0,""Empty"",""Not Empty"")" 
    'then eventually convert it to constants 
    .Value = .Value 
End With 

ませループ、単純に、おそらくはるかに高速

関連する問題