用户定义类型未定义 - 来自自定义类模块

凯尔

我遇到了这个“用户定义类型未定义”错误的问题。直到现在我将自定义类模块添加到我的工作簿之前,我从未遇到过此错误。我没有任何类型...结束工作簿中的代码段。我读到当你有类似的东西dim s as Strig而不是dim s as String你会得到这个错误。但我的代码中没有类似的东西。但是阅读这篇文章让我相信,因为我添加了我的类模块,所以我有类似dim h as Holidays假期是我班级名称的东西,我收到这个错误是因为 excel 不能将它引用到类型?

我还从许多这些帖子中了解到,人们通过添加引用来修复它们的相同错误。我只是在创建一个类模块吗?我不应该需要任何其他参考吗?这里的任何方式都是我已经拥有的参考资料的屏幕截图。

在此处输入图片说明

这个类模块我做错了什么?我什至尝试了我所有的dim h as Holidaysto实例,但dim h as Object没有运气。我将发布我如何使用我的代码,这样也许有人可以看到发生了什么。

在此先感谢您的帮助。令人困惑的是,一切仍然按预期工作,每次更改事件运行时都会出现此错误。

这是我如何初始化我的实例:我将省略一些不相关的代码

Dim startDate As Date
Dim endDate As Date
Dim d As Date
Dim startRange As Range
Dim r As Range
Dim highMonths As Integer
Dim h As Holidays
Dim y As Integer
Dim a()

startDate = DateValue(Range("Forecast_ProStart"))
y = year(startDate)
Set h = factory.CreateHolidays(y)

这是我的工厂模块:

Function CreateHolidays(year As Integer) As Holidays
    Set CreateHolidays = New Holidays
    CreateHolidays.setHolidays year
End Function

(该类返回有关我们假期的信息,它具有类似 h.getMonthWorkingDays(args) 之类的函数)

然后类:getDate() 是类中不相关的函数

Public NewYears As Date
Public MemorialDay As Date
Public IndependenceDay As Date
Public LaborDay As Date
Public Thanksgiving As Date
Public ThanksgivingAfter As Date
Public ChristmasEve As Date
Public ChristmasDay As Date
Private varYear As Integer
Private allDays As New Collection

Sub setHolidays(hYear As Integer)
    varYear = hYear
    Dim d As Date

    'fixed days
    NewYears = DateValue("1/1/" & varYear)
    IndependenceDay = DateValue("7/4/" & varYear)
    ChristmasEve = DateValue("12/24/" & varYear)
    ChristmasDay = DateValue("12/25/" & varYear)

    d = DateValue("5/1/" & varYear)
    MemorialDay = getDate(d, vbMonday, 7)
    d = DateValue("9/1/" & varYear)
    LaborDay = getDate(d, vbMonday, 1)
    d = DateValue("11/1/" & varYear)
    Thanksgiving = getDate(d, vbThursday, 4)
    ThanksgivingAfter = DateAdd("d", 1, Thanksgiving)

    allDays.Add (NewYears)
    allDays.Add (MemorialDay)
    allDays.Add (IndependenceDay)
    allDays.Add (LaborDay)
    allDays.Add (Thanksgiving)
    allDays.Add (ThanksgivingAfter)
    allDays.Add (ChristmasEve)
    allDays.Add (ChristmasDay)

End Sub
凯尔

因此,经过数小时的故障排除后,我相信已经为任何关心我的人解决了我的问题。

我有一个模块,其中包含一个名为 ExportSFCFForecast 的子模块(与上面的代码和问题完全无关),然后将新子模块添加到同一个模块中,该模块包含dim h as Holidays名为 ComputeForecast 的 . 我最终将 ExportSCFForecast 的名称更改为类似 cast 的名称。现在在工作表选择更改后不再弹出错误。我已经竭尽全力再次重现错误,但它似乎已修复。

我永远不会明白为什么这修复了它,但确实如此。也许是因为 excel 加载它的模块 subs 的方式,或者因为两个名称都包含预测这个词而受到干扰?我不知道,但它现在工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章