【发布时间】:2018-07-10 02:36:51
【问题描述】:
我是 vba 新手,但我正在尝试创建一个函数来动态查找整个工作表的范围,以便在其他宏中用于数据清理。
这里是函数:
Public Function FindRange(Rw As Long, CL As Long)
Dim Rw As Long
Dim CL As Long
CL = ActiveSheet.Cells.Find(What:="*", _
After:=Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
Rw = ActiveSheet.Cells.Find(What:="*", _
After:=Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
End Function
这里是我试图称呼它的地方:
Sub Range_Find_Method()
Call FindRange(Rw, CL)
ActiveSheet.Range("A1", Cells(Rw, CL)).Select
End Sub
我不断收到 ByRef 参数类型不匹配。
【问题讨论】:
-
更好地解释你正在尝试做什么,因为你的错误代码并不清楚。您的函数不执行任何操作,作为参数传递的变量是通过
find设置的,然后在函数结束时死亡。如果您的函数可以返回两个项目(它不能),那么它们将是Range类型,但您的Cells(Rw, CL)需要整数作为参数而不是范围。 -
看看你是否可以修改它以适应(或者更好,只是使用它):rondebruin.nl/win/s9/win005.htm
-
Public Sub FindRange(ByRef Rw As Long, ByRef CL As Long)但这不是解决问题的最佳方法。