vba - 使用 VBA 通过所选单元格值的组合过滤表格 - 语法错误

标签 vba excel syntax-error

您能帮我解决下面的代码吗,我不断收到语法错误

宏的目标是通过同一列下的多行选择进行过滤。

我遇到语法错误的行是:

sColumn(n) = sColumn(n) & _
If(sColumn(n) vbNullString, ",", "") & oCell.Text


If sColumn(n) vbNullString Then

完整代码如下:

Sub combinationFilter()

Dim oRange As Range
Dim oArea As Range
Dim oCell As Range
Dim oLO As ListObject
Dim sColumn() As Variant
Dim n As Long

' Create Filter
Set oLO = Selection.ListObject

If Not oLO Is Nothing Then

    ReDim sColumn(1 To oLO.ListColumns.Count)

    Set oRange = Intersect(Selection, oLO.DataBodyRange)

    For Each oArea In oRange.Areas
        For Each oCell In oArea.Cells
            n = oCell.Column - oLO.Range.Column + 1
            sColumn(n) = sColumn(n) & _
            IIf(sColumn(n) vbNullString, ",", "") & oCell.Text
        Next oCell
    Next oArea

    ' Apply Filter
    For n = LBound(sColumn) To UBound(sColumn)
        If sColumn(n) like vbNullString Then
            oLO.Range.AutoFilter _
            Field:=n, _
            Criteria1:=Split(sColumn(n), ","), _
            Operator:=xlFilterValues
        End If
    Next n

End If

End Sub

我还在以下行中收到不匹配错误:

If sColumn(n) like vbNullString Then
oLO.Range.AutoFilter _
Field:=n, _
Criteria1:=Split(sColumn(n), ","), _
Operator:=xlFilterValues

提前谢谢您。

最佳答案

根据您的情况,正确的语法可能如下所示:

sColumn(n) = sColumn(n) & IIf(IsNull(sColumn(n)), "", ",") & oCell.Text

或者,正如成员 @Jeeped 所指出的,使用 Like 运算符而不是 Is (或使用等号 "="):

sColumn(n) = sColumn(n) & IIf(sColumn(n) Like vbNullString, "", ",") & oCell.Text

希望这会有所帮助。

关于vba - 使用 VBA 通过所选单元格值的组合过滤表格 - 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680466/

相关文章:

excel - 如何使用 VBA 从网站提取数据并填充 Excel 工作表?

arrays - 修改现有函数以处理不同维度/结构的数组

VBA 几个用户窗体导出到工作表

excel - 将文本从 Excel 单元格复制到 PPT 文本框

c++ - CUDA: __device__ and __global__ error: expected constructor, destructor, or type conversion before "unsigned"/"void"”

vba - 浏览工作簿的所有用户表单

vba - 根据VBA中的行号突出显示单元格

java - Java中的简单打印

php - PHP解析/语法错误;以及如何解决它们

javascript - JS - 未捕获的语法错误 : Unexpected Token