为什么我的“call sub”只在最后一个选择后才能正常运行

时间:2017-12-02 10:34:44

标签: excel vba excel-vba

我有一个关于“call sub”功能与我想要的不同的问题。提前谢谢大家。

这是我的代码:

Sub filter()
Dim i As Integer, x As Single, y As Single
    x = Worksheets("filter").Range("a2").Value
    y = Worksheets("filter").Range("c2").Value
    For i = 2 To 1000
        If Worksheets("speaker data").Cells(i, "d") = "l" Then
            Worksheets("speaker data").Cells(i, "n") = Worksheets("speaker data").Cells(i, "m") - 3 * Log(x) / Log(2#)
            Else
            Worksheets("speaker data").Cells(i, "n") = Worksheets("speaker data").Cells(i, "m") - 6 * Log(x) / Log(2#)
        End If
    Next i
    Call driver
    Call ways
    Call type
    ActiveSheet.Range("$A$1:$N$1000").AutoFilter Field:=14, Criteria1:=">=" & y, _
    Operator:=xlAnd
End Sub

子“驱动程序”,“方式”,“类型”使用相同的自动过滤器,唯一不同的是自动过滤器字段。我遇到的问题是无论如何,我必须过滤最后一个“调用子”,然后前两个可以正常工作。对于上面的代码,我必须将“type”更改为“Y”或“N”,而不是All,然后,“ways”和“driver”将完美地运行。如果底部的“调用驱动程序”,那么我必须将驱动程序过滤器更改为“好”或“坏”,但不是全部,那么其余的过滤器都可以正常运行。

我想知道为什么会这样,调用子代码如下:

Sub ways()
Worksheets("speaker data").Select
If Worksheets("filter").Range("a6") = "All" Then
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$N$1000").AutoFilter Field:=9
    Else
        ActiveSheet.Range("$A$1:$N$1000").AutoFilter Field:=9, Criteria1:=Worksheets("filter").Range("A6").Value
    End If
End Sub

我真的很感谢你的帮助。enter code here

谢谢大家。

1 个答案:

答案 0 :(得分:1)

Call type

“type”是VBA中的关键词。将其替换为“Kind”。