Excelの範囲が空かどうかを確認したい。
VBA コードでの記述方法:
If Range("A38":"P38") is empty
私が得たコメントから解決策を見つけました。
Sub TestIsEmpty()
If WorksheetFunction.CountA(Range("A38:P38")) = 0 Then
MsgBox "Empty"
Else
MsgBox "Not Empty"
End If
End Sub
IsEmpty は、変数が初期化されていない場合、または明示的に Empty に設定されている場合に True を返します。それ以外の場合は False を返します。式に複数の変数が含まれる場合、常に False が返されます。IsEmpty は、バリアントの意味のある情報のみを返します。( https://msdn.microsoft.com/en-us/library/office/gg264227.aspx ) . したがって、範囲内のすべてのセルを個別にチェックする必要があります。
Dim thisColumn as Byte, thisRow as Byte
For thisColumn = 1 To 5
For ThisRow = 1 To 6
If IsEmpty(Cells(thisRow, thisColumn)) = False Then
GoTo RangeIsNotEmpty
End If
Next thisRow
Next thisColumn
...........
RangeIsNotEmpty:
もちろん、空でないセルをカウントする CountA 関数を使用したソリューションよりも多くのコードがありますが、空でないセルが少なくとも 1 つ見つかった場合、GoTo はループを中断し、特に範囲が大きく、このケースを検出する必要がある場合は、コードをより高速に実行できます。また、このコードは、VBA関数ではないExcelのCountA関数よりも、何をしているのかを理解しやすいです。
Dim M As Range
Set M = Selection
If application.CountIf(M, "<>0") < 2 Then
MsgBox "Nothing selected, please select first BOM or Next BOM"
Else
'Your code here
End If
経験から、私はあなたができることを学びました:
If Selection.Rows.Count < 2
Then End If`
説明は少し後で提供されます(現在、私は働いています)