首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果条件忽略了

如果条件忽略了
EN

Stack Overflow用户
提问于 2022-11-25 17:46:15
回答 1查看 47关注 0票数 0

我正在尝试在列"Issuer“中查找空白单元格,如果有空白单元格,则应该显示带有空白单元格的行和指示空白单元格的消息框,但是如果没有空白单元格,则不应该发生任何事情(不出现弹出消息)。

我有下面的代码,这是做什么是打算做的,但是弹出消息总是出现,即使没有空白。

否则语句将被忽略。真的很感谢你的帮助。

守则摘要:

( 1)对除第8栏中的现金以外的所有资产类别进行筛选( 2)在“发布者”栏上筛选空白,如果有空白字段,则会弹出空白消息,如果没有空白字段,则重新设置筛选器并继续

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-25 18:19:45

很难准确地知道你要用过滤器做什么,以及你定义的空白单元格是什么。Excel对空白单元格的定义有一个空值(null),这意味着使用=""0的任何值都将而不是视为空白。

假设这也是您定义为空白的Excel,那么您可以对空白使用内置的工作表函数countBlank测试。我猜您所面临的挑战是测试合适的范围(您似乎使用的是与过滤器相关的条件,而不是correcT)。

在下面的示例中,您可以看到在H列中搜索空白和显示的测试宏。您可能可以利用这样的工具来测试您正在使用的范围或问题所在。

代码语言:javascript
复制
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 Sub

Excel确实有一个可数函数,它可以很容易地用于测试数据范围,唯一的问题是

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74576355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档