У меня проблемы с этой ошибкой "Пользовательский тип не определен". До этого момента у меня никогда не было этой ошибки, пока я не добавил в свою книгу модуль пользовательских классов. У меня нет какого-либо типа ... фрагментов кода в рабочей книге. Я читал, что когда у вас есть что-то вроде dim s as Strig
вместо dim s as String
, вы получите эту ошибку. но в моем коде ничего подобного нет. Но чтение этого заставляет меня поверить, что, поскольку я добавил свой модуль класса, у меня есть что-то вроде dim h as Holidays
, где Holidays - это имя моего класса, я получаю эту ошибку, потому что Excel не может отнести это к типу?
Я также прочитал, что во многих из этих сообщений о той же ошибке, что люди исправляют их, добавив ссылку. Буду ли я просто создать модуль класса. мне не нужно никаких других ссылок, если я? Любой способ здесь - скриншот ссылок, которые у меня уже есть.
Что я могу делать не так с этим модулем класса? я даже попробовал все свои экземпляры от dim h as Holidays
до dim h as Object
без удачи. я опубликую, как я использую свой код, так что, возможно, кто-то может увидеть, что происходит.
Заранее спасибо за помощь yalls. сбивает с толку то, что все по-прежнему работает так, как задумано, просто получайте эту ошибку каждый раз, когда запускается наше событие изменения.
Вот как я инициализирую свой экземпляр: я опущу часть несвязанного кода
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