Процедура KeyDown выбрасывает 2 ошибки компиляции - PullRequest
1 голос
/ 12 июня 2019

Я получаю два типа ошибок компиляции при попытке компилировать форму. Это происходит с любой подпрограммой, которая включает процедуры KeyDown. Первая ошибка, которую я получаю -

«Определяемый пользователем тип не определен»

Другая ошибка, которую я получаю:

"Объявление процедуры не соответствует описанию события или процедура с таким же именем "

Я связал библиотеку объектов Microsoft Forms 2.0. Когда я делаю это, ошибка «Определенный пользователем тип не определена» изменяется на ошибку процедуры. Я не могу найти где-нибудь, где это было проблемой для кого-то еще.

Private Sub cmbDriverNumber_KeyDown(Index As Integer, KeyCode As MSForms.ReturnInteger, Shift As Integer)
    Call cView.sendBack(KeyCode, Shift, Me)
End Sub

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Во-первых, у меня сложилось впечатление, что не рекомендуется использовать библиотеку MS Forms, поскольку это была скорее внутренняя библиотека, используемая в приложениях MS Office.(Я использовал эту библиотеку, хотя).YMMV.

Во-вторых, можно ожидать User-defined type not defined, если вы копируете какой-либо код в свое приложение, использующее MS Forms, но еще не добавили ссылку на эту библиотеку в свой проект.

В-третьих, фрагмент кода, который у вас есть, включает Index, что означает, что он вызывается массивом элементов управления.Если этот код был просто чем-то, что вы вставили в приложение, и вы не используете массив элементов управления cmbDriverNumber, тогда подпись неверна.Вместо этого попробуйте удалить Index As Integer, из подписи события.

Удачи!

0 голосов
/ 12 июня 2019

Ну, простой ответ - просто определить возвращаемую переменную как целое число, поскольку именно так определяется событие KeyDown.Я не знаком с библиотекой MSForms, но возможно ли, что тип элемента типа MSForms отличается от целого числа (например, типа Long)?

...