VBA检查多个范围是否为空白,如果每个范围的第一个单元格为空,则输入数据

时间:2014-08-18 18:15:19

标签: excel-vba vba excel

我需要一个宏来查看6个特定范围:

(" F15:F4999&#34) (" H15:H4999&#34) (" J15:J4999&#34) (" L15:L4999&#34) (" N15:N4999&#34) (" P15:P4999&#34)

如果这些范围中的一个或多个为空白,我需要宏输入"无数据"在空白范围的第一个单元格中(,即在F15 中)。范围包含各种类型的数据,包括文本,美元值,日期和百分比。

这个宏将成为它自己的模块的一部分,并将在另一个宏的末尾调用。

我已尝试使用COUNTA功能,但由于类型不匹配错误而挂起。以下工作,但每次运行时仅适用于第一个空白范围。 (即如果列F为空白,它将输入"无数据",但不会继续并输入" 后面的空白列中没有数据)

Sub FillFetchDataBlanks()

Application.ScreenUpdating = False
Application.EnableEvents = False

Sheets("Graph Data").Select

If Application.WorksheetFunction.CountA(Range("F15:F4999")) <= 0 Then
[F15] = "No Data"

ElseIf Application.WorksheetFunction.CountA(Range("H15:H4999")) <= 0 Then
[H15] = "No Data"

ElseIf Application.WorksheetFunction.CountA(Range("J15:J4999")) <= 0 Then
[J15] = "No Data"

ElseIf Application.WorksheetFunction.CountA(Range("L15:L4999")) <= 0 Then
[L15] = "No Data"

ElseIf Application.WorksheetFunction.CountA(Range("N15:N4999")) <= 0 Then
[N15] = "No Data"

ElseIf Application.WorksheetFunction.CountA(Range("P15:P4999")) <= 0 Then
[P15] = "No Data"

Else

On Error Resume Next


End If

[b15].Select

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

感谢任何帮助和/或建议!

谢谢,

约翰

1 个答案:

答案 0 :(得分:0)

您必须使用单独的Ifs,即不要使用ElseIf组合它们。

试试这个

With Application.WorksheetFunction
    If .CountA(Range("F15:F4999")) <= 0 Then [F15] = "No Data"
    If .CountA(Range("H15:H4999")) <= 0 Then [H15] = "No Data"
    If .CountA(Range("J15:J4999")) <= 0 Then [J15] = "No Data"
    If .CountA(Range("L15:L4999")) <= 0 Then [L15] = "No Data"
    If .CountA(Range("N15:N4999")) <= 0 Then [N15] = "No Data"
    If .CountA(Range("P15:P4999")) <= 0 Then [P15] = "No Data"
End With

这样您也不需要ElseEnd If