我正在学习使用VBA中的课程。我试图写一个获得真正使用范围的。我在类模块中的代码如下所示:
Foo<Integer> foo = Foo<Integer>.class.newInstance();
当我尝试运行它时,收到一条错误消息,说明:ByRef Type mismatch
我的代码中的参考内容不正确?
答案 0 :(得分:2)
您的函数需要一张工作表,而不是Range
。您需要:Set clTrueUsedRange = TrueUsedRange(mySheet.Worksheet)
或更改下面的代码,并在调用时传递工作表。此外,在分配对象时,Property Let
需要为Property Set
:
Option Explicit
Private mySheet As Worksheet
Public Property Get clTrueUsedRange() As Range
Set clTrueUsedRange = TrueUsedRange(mySheet)
End Property
Public Property Set Sheet(ByRef wsSource As Worksheet)
Set mySheet = wsSource
End Property
Private Function TrueUsedRange(ByRef wsSource As Worksheet) As Range
Dim rLastCell As Range
With wsSource
Set rLastCell = .Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
Set TrueUsedRange = .Range("$A$1:" & rLastCell.Address)
End With
End Function
然后使用:
Set rData.Sheet = ActiveSheet