Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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'ов то вот (недавно была такая тема на форуме):
  1. Private Sub Form_Load()
  2. For j = 1 To 50
  3. Load Label1(j)
  4. Label1(j).Visible = True
  5. Label1(j).Left = 100
  6. Label1(j).Top = j * 500
  7. Next j
  8. End Sub

За объяснение показонного тобой феномена не берусь (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
Спасибо, теперь понятно

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам