2015-11-08 2 views
0

все. вот мой код. При отладке он говорит: «Ошибка компиляции VBA: метод или элемент данных не найден» и выделяет строку: Familienkutsche.strFarbe = «Blau» Если я его наружу, он говорит то же самое о следующей строке. Что это не нравится? Все написано в одном блоке, так почему он не узнает ни «strFarbe», ни «Geschwindigkeit»? сказав, что, если я удалю Familienkutsche и просто уйду .strFarbe = «Blau» все работает. Заранее спасибо.Ошибка компиляции VBA: Метод или данные не найдены

Option Explicit 

Public strFarbe As String 
Private bytTempo As Byte 
Private blnTempoSperre As Boolean 

Public Property Let Geschwindigkeit(Speed As Long) 
If (Speed > 250) Then 
    bytTempo = 250 
    blnTempoSperre = True 
Else 
    bytTempo = Speed 
    blnTempoSperre = False 
End If 
End Property 

Public Property Get Geschwindigkeit() As Long 
    Geschwindigkeit = bytTempo 
End Property 

Public Property Get abgeriegelt() As Boolean 
    abgeriegelt = blnTempoSperre 
End Property 



Public Sub Autos() 
Dim Familienkutsche As Auto 
Let Familienkutsche = New Auto 

Familienkutsche.strFarbe = "Blau" 
Familienkutsche.Geschwindigkeit = 320 
Debug.Print Familienkutsche.Geschwindigkeit 
Debug.Print Familienkutsche.abgeriegelt 
End Sub 
+4

Это обыкновение компиляции; 'Пусть Familienkutsche = New Auto' должен быть' Set Familienkutsche = New Auto' –

+0

привет, Алекс. Спасибо за быстрый ответ. Я сделал предложенное изменение, но он все еще не компилируется и возвращает ту же ошибку. = ((( – Lola

+0

Являются ли эти коды в классе? – PatricK

ответ

0

Первая часть кода должна быть модулем классаAuto.

Public Sub Autos() должен быть в стандартном модуле . Затем он работает (с изменением Let до Set).

Выход:

250 
Wahr 
+0

Спасибо, Андре. Это действительно было проблемой. Я написал весь код в другом модуле, а не в классе Auto. – Lola

+0

Не могли бы вы просто объяснить, почему точно первая часть, а не, скажем, вторая, где я фактически упоминаю New Auto? – Lola

+0

@Lola: вы * определяете * класс в модуле класса, имя модуля - это имя класса - здесь 'Auto'. фактически используйте класс, вы его создаете ('Set Familienkutsche = New Auto'), обычно это происходит в функции или sub в стандартном модуле. Существует много страниц, описывающих это более подробно, например http: //www.cpearson. com/excel/classes.aspx – Andre

Смежные вопросы