Страница: 1 |
Страница: 1 |
Вопрос: Программное создание элементов label и combobox
Добавлено: 19.12.08 19:27
Автор вопроса: Сергей
Доброго времени суток. При создании элемента управления Label с помощью кода:
Private Sub UserForm_Activate()
Dim a As Label
Set a = Controls.Add("Forms.label.1")
a.Caption = "Метка"
a.Top = 10
a.Left = 10
a.Visible = True
End Sub
выдается ошибка Type Mismatch. При создании таким же способом элемента combobox:
Private Sub UserForm_Activate()
Dim a As combobox
Set a = Controls.Add("Forms.combobox.1")
a.Top = 10
a.Left = 10
a.Visible = True
End Sub
все работает нормально. Если убрать строчку, где определяется переменная типа label, то тоже все работает. Объясните, пожалуйста, почему так получается?
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Вопросов: 5
Ответов: 79
Профиль | | #1
Добавлено: 19.12.08 21:59
Если нужно создать много-много Label'ов то вот (недавно была такая тема на форуме):
За объяснение показонного тобой феномена не берусь (Controls.Add??? - круууто...)
Номер ответа: 2
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #2
Добавлено: 19.12.08 22:21
Нажми F2, открыв браузер объектов. В поле поиска набери label, а в контекстном меню поставь галку "показать скрытые члены"
И выяснится, что класс label есть не только в библиотеке MSForms, но и в библиотеке Excel, а класс combobox только в MSForms. Поэтому, чтобы без ошибок объявлять переменные объектов, указывай явно - Dim a As MSForms.Label
Номер ответа: 3
Автор ответа:
Сергей
Вопросов: 2
Ответов: 1
Профиль | | #3
Добавлено: 21.12.08 07:58
Спасибо, теперь понятно