VBA - 動態建立的組合框適用於一種形式,但不適用於其他形式,類別模組問題?

VBA - 動態建立的組合框適用於一種形式,但不適用於其他形式,類別模組問題?

您好,感謝您閱讀:這是 OZGRID 的交叉帖子:https://www.ozgrid.com/forum/index.php?thread/1227932-dynamic-created-combo-box-working-on-one-form-b​​ut-not-other-class-module-issue / 我在那裡還沒有運氣,一旦在這裡或那裡解決了就會更新。

我有兩種帶有動態創建的組合框的表單,試圖引用同一類模組。

第一個按預期工作,我在新表單上看不到我的程式碼的問題。

類別模組程式碼在這裡:

Option Explicit
Private WithEvents m_ComboBoxEvents As MSForms.ComboBox
Public Property Set Box(RHS As MSForms.ComboBox)
Set m_ComboBoxEvents = RHS
End Property
Private Sub m_ComboBoxEvents_Change()
If REACTIONS.Visible = True Then
Debug.Print "hELlO"
'\\ WHEN COMBOBOX CHANGES ON REACTION FORM IT PASSES THE CAPTION INFORMATION FOR THE BUTTONS.
If Len(Box.Name) = 7 Then REACTIONS.Frame20.Controls("MyNCBtn" & Right(Box.Name, 1)).Caption = Box.List(Box.ListIndex, 1) ' will only work until 9
If Len(Box.Name) = 8 Then REACTIONS.Frame20.Controls("MyNCBtn" & Right(Box.Name, 2)).Caption = Box.List(Box.ListIndex, 1) ' will work until 99
End If
Debug.Print "Hi"
If UFSTDRDS.Visible = True Then
MsgBox ("Hello")
End If
End Sub
Public Property Get Box() As MSForms.ComboBox
Set Box = m_ComboBoxEvents
End Property

表單代碼在這裡。

Sub Not_Working()
Dim clsComboBox As New cComboBox
Dim MyCBx As MSForms.ComboBox
Dim m_colComboBoxEvents As Collection ' If I remove this line I get variable undefined error in next line, but it is not required in the working code above
Set m_colComboBoxEvents = New Collection
Loop starts here
Set MyCBx = Me.MultiPage1.Pages(2).Controls.Add("Forms.ComboBox.1", "MyNCBox" & x, 1)
Dim MyCBxfill As Variant
MyCBxfill = ws1.Range("A1").CurrentRegion
With MyCBx
.Top = 280 + ((x - 1) * 30)
.Left = 250
.Width = 350
.Height = 20
.FontSize = 8
.FontName = "Times New Roman"
.ColumnCount = UBound(MyCBxfill, 2)
'.ColumnWidths = ",0"
.List = MyCBxfill
End With
Set clsComboBox = New cComboBox
Set clsComboBox.Box = MyCBx
m_colComboBoxEvents.Add clsComboBox, CStr(m_colComboBoxEvents.Count + 1)
Loop ends here
End Sub

如果您在ozgrid 網站上滾動,有一個名為test.xlsb 的示例(注意,已經進行了幾次文本交換,但還沒有人提供任何解決方案),那裡還有更多詳細信息,但我認為我包含了太多內容該貼文的詳細資訊。由於某種原因,該課程不適合我。

我不介意全新的方法或替代語法。我只是無法弄清楚為什麼它在原始上下文中起作用而不是在新上下文中起作用

對現有程式碼的任何見解和改進將不勝感激。

問候

賈斯汀

答案1

由 Rory @ Ozgrid.com 解決,詳情如下:

我沒有看過你的工作簿,但是第二個程式碼中你的集合聲明位於錯誤的位置。這行:

Dim m_colComboBoxEvents As Collection

需要在模組級別。否則,一旦您的例程完成,該變數就會被清除,並且您的類別不再有任何實例。

相關內容