Ошибка выполнения 451 при попытке получить словарь классов - PullRequest
0 голосов
/ 08 декабря 2018

Я получаю ошибку 451 во время выполнения при попытке извлечь словарь как свойство моего класса.В нем говорится: «Свойство позволяет определить примечание процедуры, а свойство get процедуры не возвращает объект».Вот основной код подпрограммы, а затем код класса, в основной подпрограмме первое окно сообщения работает, когда второе окно сообщения (которое я собираюсь вернуть тем же данным, что и первое) выдает ошибку:

Основной модуль:

Sub Main()

'Declaring [BD]
Dim oHeaderDictionary As New Scripting.Dictionary

'Initializing [BD]
Set oThisSlider = New Slider
Set oHeaderDictionary = New Scripting.Dictionary

Worksheets("Options").Activate

iLastRow = bpLastRow("B")

For iRowIncrementer = 3 To iLastRow
    sColumnHeaders = Cells(iRowIncrementer, 2).Value
    sColumnStyles = Cells(iRowIncrementer, 3).Value
    oHeaderDictionary.Add sColumnHeaders, sColumnStyles
Next iRowIncrementer

MsgBox oHeaderDictionary.Items(1)

oThisSlider.Headers = oHeaderDictionary

MsgBox oThisSlider.Headers.Items(1)

End Sub

И модуль класса:

'Declaring [BD]
Private m_oHeaders As Scripting.Dictionary

'Initializing [BD]
'==========================================================================================
' [BD] Properties
'==========================================================================================
Property Get Headers() As Scripting.Dictionary
    Set Headers = m_oHeaders
End Property
Property Let Headers(oHeaders As Scripting.Dictionary)
    Set m_oHeaders = oHeaders
End Property

Есть идеи, почему возникает эта ошибка и что делать?

1 Ответ

0 голосов
/ 08 декабря 2018

Вариант Явный - твой друг.Вы должны объявить oThisSlider как объект Slider, чтобы он работал.

Option Explicit

Sub Main()

    'Declaring [BD]
    Dim oHeaderDictionary As New Scripting.Dictionary
    Dim oThisSlider As Slider
    Dim iLastRow As Long
    Dim iRowIncrementer As Long
    Dim sColumnHeaders As String
    Dim sColumnStyles As String

    'Initializing [BD]
    Set oThisSlider = New Slider
    Set oHeaderDictionary = New Scripting.Dictionary

    Worksheets("Options").Activate

    iLastRow = bpLastRow("B")

    For iRowIncrementer = 3 To iLastRow
        sColumnHeaders = Cells(iRowIncrementer, 2).Value
        sColumnStyles = Cells(iRowIncrementer, 3).Value
        oHeaderDictionary.Add sColumnHeaders, sColumnStyles
    Next iRowIncrementer

    MsgBox oHeaderDictionary.Items(1)

    oThisSlider.Headers = oHeaderDictionary

    MsgBox oThisSlider.Headers.Items(1)

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