我在从前缀列表中为变量赋值时遇到问题。 我会更好地解释。在" Module8"我把以下变量用于常量值:
Public Const Europe = 0.12, _
Middle_East= 0.12, _
Africa = 0.185
对其他模块也应该是可见的。在"模块5"我有以下几行:
Sub CalcPop()
Sheets("Region").Select
Data = Range("I7:I15").Value
Geo_Region = Data(1, 1)
Population = Data(3, 1)
Extension = Data(4, 1)
S = Data(7, 1)
S = S * (1 - Geo_Region)
现在代码出现在" Module5"读取名为" Region"其中区域(即欧洲,非洲等)作为字符串出现,因此变量" Geo_Region"被评为欧洲,非洲等 问题是当它出现在S = S *(1 - Geo_Region)行时,它给出了运行时错误' 13' "类型不匹配"。我猜是因为代码读取了工作表中的字符串,但它无法将字符串与" Module8"中的公共常量中存在的值相关联。 您能否建议我如何处理,以便将公开列表中的值与表格中的字符串相关联?
提前谢谢!
答案 0 :(得分:2)
你可以使用一个集合。
在Module8中:
Dim Geo_Region_List As Collection '<-- declaring the variable as global will allow you to access it any time all over your code
在Workbook中打开方法(为了从程序开始以来初始化常量):
Set Geo_Region_List = New Collection
With Geo_Region_List
.Add 0.12, "Europe"
.Add 0.12, "Middle East"
.Add 0.185, "Africa"
End With
...然后,在您的Module5中,您可以访问与密钥相关联的值:
S = S * (1 - Geo_Region_List(Geo_Region))
(我假设Geo_Region
是一个类似Europe
的字符串,并且您希望返回相关值0.12
)