VBA:Excel范围总是空着?

Ana*_*tic 1 excel vba function excel-2007 excel-vba

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

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

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

2.非中等 - 范围("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
Run Code Online (Sandbox Code Playgroud)

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

    '1. Med
    If WorksheetFunction.CountA(range("J13:K13")) = 0 Then
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?如果字段的值为"X"(或长度为1),那么我需要在其他工作表中保存"1".如果该字段为空(或长度为0),则需要在我的其他工作表中保存"0".

我迷失了为什么我的IsEmpty()检查功能不正常.

Dav*_*ens 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
Run Code Online (Sandbox Code Playgroud)

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

此语句True仅评估所有单元格是否为空/空字符串值.