런타임에 두 개의 콤보 상자가있는 사용자 양식이 있다고 가정 해 봅니다. 첫 번째 콤보는 A1 : A2 (과일, 야채)의 항목을 제공합니다. 두 번째 콤보를 B1 : B2 (Apple, Orange) 또는 C1 : C2 (Carrot, Tomato)에서 원한다면 첫 번째 콤보에서 사용자가 선택한 것을 제외해야합니다.다른 개체를 수정할 수 없습니다 - 런타임 오류 91
Option Explicit
Public ComboBox1 As FoodClass
Public Combobox2 As FoodClass
Private Sub UserForm_Initialize()
Set ComboBox1 = New FoodClass
Call ComboBox1.DrawCombo1(UserForm)
Set Combobox2 = New FoodClass
Call Combobox2.DrawCombo2(UserForm)
End Sub
마다 사용자가 첫 번째 콤보 오류 91 개 나타납니다 변경 : "FoodClass"라는 내 수업 아래
Option Explicit
Public WithEvents MyCombo1 As MSForms.ComboBox
Public WithEvents MyCombo2 As MSForms.ComboBox
Public Sub DrawCombo1(oParent)
Set MyCombo1 = oParent.Controls.Add("Forms.ComboBox.1", "Combo1", True)
With MyCombo1
.Top = 20
'(...) setting position
.RowSource = "A1:A2" 'Fruits;Vegetables
End With
End Sub
Public Sub DrawCombo2(oParent)
Set MyCombo2 = oParent.Controls.Add("Forms.ComboBox.1", "Combo2", True)
With MyCombo2
'(seting position)
End With
End Sub
Public Sub MyCombo1_Change()'When user chose from combo 1...
If MyCombo1.Value = "Fruits" Then MyCombo2.RowSource = "B1:B2" 'Apple;Orange
If MyCombo1.Value = "Vegetables" Then MyCombo2.RowSource = "C1:C2"'Carrot;Tomato
End Sub
그런 다음 사용자 양식에 내 코드가있다. 한 개체를 다른 개체로 어떻게 수정합니까? UserForm_Initialize
에서
왜 VBA가 필요합니까? 두 개의 목록 상자를 가질 수 있고 두 번째 목록 상자에'Indirect'를 사용할 수 있습니다. –
FoodClass 클래스에 두 개의 콤보가 있으며 두 개의 FoodClass 인스턴스를 만들지 만 각 인스턴스에는 초기화 된 콤보가 하나만 있습니다. 두 번째 것은 설정되지 않습니다. 그것이 오류 91이 나타나는 이유입니다. – dee