VBA全局静态数组初始化:跨模块引用与ComboBox绑定问题
解决VBA全局数组绑定ComboBox的问题
你的代码存在两个关键问题导致功能无法实现:
gTransTypeArrayPopulate是Sub过程,没有返回值,不能直接赋值给ComboBox.List属性- 未调用该Sub过程填充全局数组
gTransTypeArray,直接赋值时数组为空
修复后的UserForm代码
Private Sub UserForm_Initialize() ' 先调用模块中的过程填充全局数组 modArrays.gTransTypeArrayPopulate ' 将填充好的全局数组绑定到ComboBox cmboTransType.List = modArrays.gTransTypeArray End Sub
可选优化方案(无需全局变量)
如果不需要全局数组供其他模块复用,也可以把填充数组的逻辑改成Function直接返回数组,简化代码:
modArrays模块修改为:
Option Explicit Function GetTransTypeArray() As Variant GetTransTypeArray = Array( _ "Acquisition", _ "Disposition", _ "Lease", _ "Easement", _ "Condemnation", _ "Purchase Option", _ "Right of First Refusal/Offer" _ ) End Function
UserForm代码修改为:
Private Sub UserForm_Initialize() cmboTransType.List = modArrays.GetTransTypeArray End Sub
内容的提问来源于stack exchange,提问作者Squid1622
相关产品推荐
相关产品推荐

