上课不行

时间:2015-07-08 08:49:07

标签: excel vba excel-vba

我正在学习使用VBA中的课程。我试图写一个获得真正使用范围​​的。我在类模块中的代码如下所示:

Foo<Integer> foo = Foo<Integer>.class.newInstance();

当我尝试运行它时,收到一条错误消息,说明:ByRef Type mismatch

我的代码中的参考内容不正确?

1 个答案:

答案 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