我需要一个宏来查看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
感谢任何帮助和/或建议!
谢谢,
约翰
答案 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
这样您也不需要Else
和End If