2016-05-22 27 views
-1

我有2个下拉框是这样的:错误从词典列表获取数组在我的VBA项目的VBA

combobox1=zahedan,zabol 
combobox2=621,54130 

和2个阵列我宣布救子项扎黑丹和扎布尔的列表。我使用字典获取选定阵列时combobox1变化是这样的:

Option Explicit 
Option Base 1 
Dim dicArrays As Scripting.Dictionary 

Dim hoze621code 
Dim hoze621name 

Dim hoze54130code 
Dim hoze54130name 

当形式的活性做程序象下面出头:

Private Sub Worksheet_Activate() 

    hoze621code = Array(54101, 54102) 
    hoze621name = array("test1", "test2") 

    hoze54130code = Array(5421, 5422) 
    hoze54130name = array("test3", "test4") 

    Set dicArrays = New Scripting.Dictionary 
    dicArrays.Add "hoze621name", hoze621name 
    dicArrays.Add "hoze621code", hoze621code 

    dicArrays.Add "hoze54130name", hoze54130name 
    dicArrays.Add "hoze54130code", hoze54130code 
现在

当我使用combobox1.change抓取所选区域的列表它显示我的运行时错误91或13?这是combobox1.change代码:

Private Sub ComboBox1_Change() 
Dim arrayname2(), arraycode2() As String 

    arrayname2 = dicArrays("hoze" & ComboBox2.List(ComboBox1.ListIndex) & "name") 
    arraycode2 = dicArrays("hoze" & ComboBox2.List(ComboBox1.ListIndex) & "code") 
    // do somthings with selected array 

End Sub 

我认为它是好的,但不工作!任何机构来帮助我?

回答

0

编辑:添加一些信息有关变量的作用域

不太清楚如何显示的代码散布在你的项目模块

,让我有一些编译我必须声明为Public将用户窗体代码和模块和/或工作代码之间共享thse变量,如以下

'code where Private Sub Worksheet_Activate() is placed 
Option Explicit 
Public hoze621code 
Public hoze621name 

Public hoze54130code 
Public hoze54130name 

Public dicArrays As Scripting.Dictionary 

接下来,肯定你必须同时声明arrayname2()arraycode2()变量Variant

Private Sub ComboBox1_Change() 
    Dim arrayname2() As Variant, arraycode2() As Variant 

    arrayname2 = dicArrays("hoze" & ComboBox2.List(ComboBox1.ListIndex) & "name") 
    arraycode2 = dicArrays("hoze" & ComboBox2.List(ComboBox1.ListIndex) & "code") 

    'do somthings with selected array 
    ' like: 
    Dim i As Long 
    MsgBox "arrayname2 has " & UBound(arrayname2) + 1 & " elements" 
    For i = 0 To UBound(arrayname2) 
     MsgBox vbTab & "element " & i & ": " & arrayname2(i) 
    Next i 

End Sub 
+0

它告诉我错误'对象变量或与块变量未设置' –

+0

过于模糊的线索......什么行实际上引发错误?并可能发布最低限度的描述,让这里的人了解什么变量定义在哪里(模块代码窗格,用户窗体代码窗格,表单代码窗格..) – user3598756

+0

当我再次运行它显示错误'类型不匹配' –