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