我正在尝试在列"Issuer“中查找空白单元格,如果有空白单元格,则应该显示带有空白单元格的行和指示空白单元格的消息框,但是如果没有空白单元格,则不应该发生任何事情(不出现弹出消息)。
我有下面的代码,这是做什么是打算做的,但是弹出消息总是出现,即使没有空白。
否则语句将被忽略。真的很感谢你的帮助。
守则摘要:
( 1)对除第8栏中的现金以外的所有资产类别进行筛选( 2)在“发布者”栏上筛选空白,如果有空白字段,则会弹出空白消息,如果没有空白字段,则重新设置筛选器并继续。
Sub Filter()
If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilter.ShowAllData
Dim ws As Object
ActiveSheet.Range("H:H").AutoFilter Field:=8, Criteria1:="<>Cash", Operator:=xlAnd
SearchCol = "Issuer"
For Each ws In Worksheets
Set rng1 = ws.UsedRange.Find(SearchCol, , xlValues, xlWhole)
With ws.Range("A2")
If .AutoFilter(Field:=rng1.Column, Criteria1:="") Then
MsgBox ("Blank Coupan Rate")
Else
On Error Resume Next
End If
End With
Next ws
End Sub发布于 2022-11-25 18:19:45
很难准确地知道你要用过滤器做什么,以及你定义的空白单元格是什么。Excel对空白单元格的定义有一个空值(null),这意味着使用=""或0的任何值都将而不是视为空白。
假设这也是您定义为空白的Excel,那么您可以对空白使用内置的工作表函数countBlank测试。我猜您所面临的挑战是测试合适的范围(您似乎使用的是与过滤器相关的条件,而不是correcT)。
在下面的示例中,您可以看到在H列中搜索空白和显示的测试宏。您可能可以利用这样的工具来测试您正在使用的范围或问题所在。
Sub exampleTHis()
Dim ws As Worksheet, testRange As Range, aCount As Long, zAnswer
For Each ws In ThisWorkbook.Worksheets
Set testRange = Intersect(ws.Range("H:H"), ws.UsedRange)
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 SubExcel确实有一个可数函数,它可以很容易地用于测试数据范围,唯一的问题是
https://stackoverflow.com/questions/74576355
复制相似问题