VBA:Excel的范围总是作为空?

我有一个Excel工作簿中的2个字段:

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”。

我在为什么我的IsEmpty()检查不能正常工作的迷路。

我不认为你可以在一系列的单元格上使用IsEmpty 。 我可以复制这种行为,每当我通过2+单元格的范围, IsEmpty函数返回False

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

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

调整

在范围内的公式的存在,即使返回一个空string( "" )值的公式将由COUNTA函数计算。

您可能能够使用COUNTIF函数:

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

这将避免计数返回空string的公式。

当且仅当所有单元格都是空白/空string值时,此语句评估为True