40

Excelの範囲が空かどうかを確認したい。

VBA コードでの記述方法:

If Range("A38":"P38") is empty
4

8 に答える 8

71

私が得たコメントから解決策を見つけました。

Sub TestIsEmpty()
    If WorksheetFunction.CountA(Range("A38:P38")) = 0 Then
        MsgBox "Empty"
    Else
        MsgBox "Not Empty"
    End If
End Sub
于 2012-05-30T07:15:21.847 に答える
5

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関数よりも、何をしているのかを理解しやすいです。

于 2016-06-27T13:25:48.157 に答える
4
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`

説明は少し後で提供されます(現在、私は働いています)

于 2015-07-30T13:47:28.810 に答える