Определяемый пользователем тип не определен - из модуля пользовательского класса - PullRequest
0 голосов
/ 08 февраля 2020

У меня проблемы с этой ошибкой "Пользовательский тип не определен". До этого момента у меня никогда не было этой ошибки, пока я не добавил в свою книгу модуль пользовательских классов. У меня нет какого-либо типа ... фрагментов кода в рабочей книге. Я читал, что когда у вас есть что-то вроде dim s as Strig вместо dim s as String, вы получите эту ошибку. но в моем коде ничего подобного нет. Но чтение этого заставляет меня поверить, что, поскольку я добавил свой модуль класса, у меня есть что-то вроде dim h as Holidays, где Holidays - это имя моего класса, я получаю эту ошибку, потому что Excel не может отнести это к типу?

Я также прочитал, что во многих из этих сообщений о той же ошибке, что люди исправляют их, добавив ссылку. Буду ли я просто создать модуль класса. мне не нужно никаких других ссылок, если я? Любой способ здесь - скриншот ссылок, которые у меня уже есть.

enter image description here

Что я могу делать не так с этим модулем класса? я даже попробовал все свои экземпляры от 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

1 Ответ

0 голосов
/ 11 февраля 2020

Итак, после нескольких часов поиска и устранения неисправностей, я считаю, что решил мою проблему для любого, кого это волнует.

У меня был модуль с подпрограммой ExportSFCForecast (полностью не связанной с кодом и вопросом выше ), а затем добавил новый саб к тому же модулю, который содержал dim h as Holidays, под названием ComputeForecast. Я закончил тем, что изменил имя ExportSFCForecast на что-то вроде приведения. И теперь ошибка больше не появляется после изменения выбора листа. Я устал столько, сколько я могу сделать, чтобы воссоздать ошибку снова, но она, кажется, исправлена.

Я никогда не пойму, почему это исправило это, но это сделало. Может быть, это было связано с тем, как Excel загружает свои модульные сабы, или что-то мешало, потому что оба имени содержали слово «прогноз»? я не знаю, но сейчас это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...