VBA:Excel范围总是空着?

时间:2013-07-09 15:10:51

标签: excel function vba excel-vba excel-2007

我在Excel工作簿中有两个字段:

1。 MED - 范围(" J13:K13")

公式:= IF(D5 = 1," X","")

2。非MED--范围(" L13:M13")

公式:= IF(D5 = 2," X","")

使用以下代码时,字段始终显示为非空,因此保存的值为' 1':

    '1. Med
    If Not IsEmpty(range("J13:K13").value) Then
        Worksheets("FeedSamples").range("AK" & newRow).value = 1
    Else
        Worksheets("FeedSamples").range("AK" & newRow).value = 0
    End If
    '2. Non-Med
    If Not IsEmpty(range("L13:M13").value) Then
        Worksheets("FeedSamples").range("AL" & newRow).value = 1
    Else
        Worksheets("FeedSamples").range("AL" & newRow).value = 0
    End If

我尝试在我的IF语句中使用以下内容,但计数总是' 1':

    '1. Med
    If WorksheetFunction.CountA(range("J13:K13")) = 0 Then

有人有什么想法吗?如果该字段有一个' X'对于一个值(或长度计数为1),我需要保存' 1'在我的其他工作表中。如果该字段为空(或长度为0),那么我需要保存' 0' 0在我的其他工作表中。

我很遗憾为什么我的IsEmpty()检查功能不正常。

1 个答案:

答案 0 :(得分:5)

我认为你不能在一系列细胞上使用IsEmpty。我可以复制这种行为,每当我传递一系列2+单元格时,IsEmpty函数返回False

尝试使用If Application.WorksheetFunction.CountA(Range("J13:K13")) = 0

这将检查范围内是否存在任何值,并且仅当所有单元格都不包含值(范围为空)时才返回值0,否则它将返回非零值,表示范围不为空。

<强>修订

""函数将计算范围中公式的存在,甚至是返回空字符串(COUNTA)值的公式。

您可以使用COUNTIF功能:

If Application.WorksheetFunction.CountIF(Range("J13:K13"),"") = Range("J13:K13").Cells.Count

这将避免计算返回空字符串的公式。

当且仅当所有单元格都为空/空字符串值时,此语句才会评估True