vba - 包含 <> 的 if 语句无法正常工作

标签 vba excel

我在使用此代码时遇到问题,尽管不满足 IF 条件,但列仍然显示:

If CBool(Application.WorksheetFunction.CountIf(.Columns(j), "<>0"))

代码循环遍历列,仅显示值 > 0 的列。我不知道问题是否出在 j 上。或使用 CBool条件本身。我需要一些帮助,因为我确实需要这段代码用于我的 Excel,因为这样分析起来会更容易、更有用!谢谢。

Sub TestPasteColumnData3()

    Dim lastcol As Long
    Dim j As Long

    With Worksheets("WF - L12 (3)")
        lastcol = .Cells(5, Columns.Count).End(xlToLeft).Column
        For j = 3 To lastcol
            'change >0 to <>0 and 3 to j
            If CBool(Application.WorksheetFunction.CountIf(.Columns(j), "<>0")) Then
                .Columns(j).Copy Destination:=Worksheets("Sheet 1").Columns(j) 'Dont delete, this code works
            Else
                MsgBox ("No Value")
                Exit Sub
            End If
        Next
    End With

    MsgBox ("Done")
End Sub

最佳答案

如果 CountIf 函数不等于 0,则该函数将计算范围内的任何内容,包括空白单元格,这将导致您的

CBool(Application.WorksheetFunction.CountIf(.Columns(j), "<>0"))

如果除了全 0 的列(没有空格)之外还有其他内容,则为 TRUE

你可以尝试一下

If Application.WorksheetFunction.Sum(.Columns(j)) > 0 Then
    .Columns(j).Copy Destination:=Worksheets("Sheet 1").Columns(j) 'Dont delete, this code works
Else
    MsgBox ("No Value")
    Exit Sub
End If

这将为您提供任何包含大于 0 的值的列,但仍会考虑该列中可能存在的任何空白(或其他情况)。

关于vba - 包含 <> 的 if 语句无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265699/

相关文章:

excel - 如何以编程方式将图像添加到命令按钮/表单按钮/图像控件

VBA,Excel如何设置特定样式而不使用它们的名称?

vba - 如何防止宏使 Excel 窗口卡住/变白?

excel - 如何使用 Excel VBA 字符串中的参数运行存储过程?

excel - 将 Access 表从 Excel VBA 导出到 dBase 文件?

vba - 在引用另一个动态创建的控件的类中存储在集合中的动态创建的控件时出现“需要对象”错误

vba - 迭代次数过多 : syntax needed to highlight the cell row only after satifsying all criteria

excel - Mac 版不显示在 Excel VBA 中插入用户窗体的选项

excel - 当 ListBox.RowSource 不返回任何结果时,允许列表框不显示任何结果

Python Excelwriter (xlsxwriter) 从 URL 插入图像