Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 私有子返回ByRef参数类型不匹配_Excel_Vba - Fatal编程技术网

Excel 私有子返回ByRef参数类型不匹配

Excel 私有子返回ByRef参数类型不匹配,excel,vba,Excel,Vba,我编写了以下函数 Public Function sorting(WS As Worksheets, Col As Range, Rng As Range, Sort_Order As XlSortOrder) Application.ScreenUpdating = False With WS .Sort.SortFields.Clear .Sort.SortFields.Add Key:=Col, SortOn:=xlSortOnV

我编写了以下函数

    Public Function sorting(WS As Worksheets, Col As Range, Rng As Range, Sort_Order As XlSortOrder)

   Application.ScreenUpdating = False

    With WS

        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=Col, SortOn:=xlSortOnValues, Order:=Sort_Order, DataOption:=xlSortNormal


        With .Sort


            .SetRange Rng
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply


        End With


    End With

    Application.ScreenUpdating = True


End Function
现在,我尝试基于函数运行以下代码

Private Sub cmbCareerPath_Change()

Application.ScreenUpdating = True


    Set WS = Worksheets("FindPath")
    Set Col = WS.Range("D:D")
    Set Rng = WS.Range("A:Z")

        Call sorting(WS, Col, Rng, xlAscending)

            Application.ScreenUpdating = False


End Sub
但是,当我运行Sub时,会出现编译错误:

ByRef argument type mismatch
在WS的下面一行

调用排序(WS,列,Rng,XLG)

任何帮助都将不胜感激


谢谢

首先,您需要在subcorerpathchange中声明所有变量。否则,您将传递变体。那将解决你眼前的问题。 (如上所述,Dim作为工作表,尽管现在它看到的是变体,而不是工作表)


然后将公共函数更改为ws-as工作表(而不是工作表)

首先,您需要在subcorerpathchange中声明所有变量。否则,您将传递变体。那将解决你眼前的问题。 (如上所述,Dim作为工作表,尽管现在它看到的是变体,而不是工作表)


然后将公共函数更改为ws-as工作表(非工作表)

ws
是工作表对象。您正在将其传递给工作表集合。在子系统中,将
WS-as-WorkSheet
更改为
WS-as-WorkSheet
WS
是工作表对象。您正在将其传递给工作表集合。在子系统中,将
WS-as-WorkSheet
更改为
WS-as-WorkSheet
Dim ws As Worksheet
Dim col As Range
Dim rng As Range
Dim xla As XlSortOrder