【发布时间】:2022-11-26 07:05:57
【问题描述】:
这不是我的代码,因为有人在 stackflow 上帮助了我。但是我仍然坚持它所以再次发布。
本质上,代码对 E 列中的空白单元格进行计数,因此逻辑有效。但是,在计算空白单元格之前,我想从 H 列中排除“现金”。
下面是代码,它确实在 H 列(不包括现金)上应用过滤器,但是空白单元格被计算为包含现金的数据。
Sub exampleTHis()
ActiveSheet.Range("H:H").AutoFilter Field:=8, Criteria1:="<>Cash", _
Operator:=xlAnd
Dim ws As Worksheet, testRange As Range, aCount As Long, zAnswer
For Each ws In ThisWorkbook.Worksheets
Set testRange = Intersect(ws.Range("E:E"), ws.UsedRange)
'Set testRange = ws.Range("E2", Range("E" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
If Not testRange Is Nothing Then
aCount = Application.WorksheetFunction.CountBlank(testRange)
If aCount > 0 Then
'blank cells found....
zAnswer = MsgBox(aCount & " blank values found in at " & ws.Name & testRange.Address & ". Continue macro?", vbYesNo)
If zAnswer = vbNo Then Exit For
End If
End If
Next ws
End Sub
'''
【问题讨论】:
-
您要将此用于包含此代码 (
ThisWorkbook) 的工作簿中的所有工作表 (For Each ws In ...) 还是用于特定工作表?如果是后者,它的(标签)名称是什么?这些空白单元格是空的还是有公式,例如IfError(Something, "")?您的工作表的屏幕截图会创造奇迹。请在您的帖子中添加任何其他信息。 -
仅在工作簿选项卡名称“资产”中的一个工作表上
-
空白单元格为空(其中没有公式)