从userform到module的公共数组是空的,但在userform内部获取值

时间:2017-01-10 19:49:38

标签: arrays vba module public userform

我遇到了一个奇怪的问题。我有2 Userform,最初Userform2位于Userform1内,但我无法让它运行。之后,在Userform2完成其他Userform1之后,我在模块中调用了Userform2

问题是Listbox是多选 Global lenarrv Global Arrver Global BoxPMData Global anno Global PMDATAarray Global LenPMDArray Public varfamilia As Variant Public pampm As Variant Sub AbrirMaestro(ByVal anno As Variant) Application.ScreenUpdating = False UserForm1.Show UserForm2.Show Dim Arrver() As Variant Dim lenarrv As Long contentosrcontento = 1 lenarrv = UBound(pampm) For tt = 0 To lenarrv - 1 ReDim Arrver(contentosrcontento) Arrver(contentosrcontento) = pampm(tt) contentosrcontento = contentosrcontento + 1 Next tt lenarrv = UBound(Arrver) Inputbox_PMDATA anno End Sub ,我将每个选择保存在一个数组中,当Userform2卸载时,数组似乎是空的。

我已经检查了几个小时的错误,例如:我没有明确的选项,但是代码很短,我在代码中查找了数组,它只显示在我想要的确切部分上。< / p>

公共阵列作为变体都不是问题,因为它位于Userform和原始模块之外。

我来自智利,所以有些变数的名字是西班牙语,我的英语可能不太好,我会尽力解释自己。

以下是代码:

 Private Sub UserForm_Activate()
     Me.StartUpPosition = 1
     Me.Left = Application.Left + Application.Width - Me.Width - 400
 End Sub

 Private Sub UserForm_Initialize()
 Dim listaitems As Variant
 Workbooks("MAESTROS.xlsx").Activate
 numerofilas = Workbooks("MAESTROS.xlsx").Sheets("VERTICALES").Cells(2, 1).End(xlDown).Row
 listaitems = Workbooks("MAESTROS.xlsx").Sheets("VERTICALES").Range("A2:A" & numerofilas)

 listaitems = Application.WorksheetFunction.Transpose(listaitems)

     For h = 1 To numerofilas - 1
         ListBox1.AddItem listaitems(h)
     Next h
 Workbooks("MAESTROS.xlsx").Close False

 End Sub


 Public Sub CommandButton1_Click()

 Dim i As Integer
 Dim count As Integer



 count = 1
 For i = 0 To ListBox1.ListCount - 1
     If ListBox1.Selected(i) = True Then
             ReDim pampm(count)
             pampm(i) = ListBox1.List(i)
             count = count + 1
     End If
 Next i


 Unload UserForm2

 End Sub

Userforms:

UserForm1

以下是 Private Sub UserForm_Activate() Me.StartUpPosition = 1 Me.Left = Application.Left + Application.Width - Me.Width - 400 End Sub Private Sub UserForm_Initialize() Dim ListItems As Variant MsgBox ("Elegir el archivo MAESTRO") Master = Application.GetOpenFilename(MultiSelect:=False) isBool = VarType(Master) = vbBoolean If isBool Then If Not Master Then End Application.ScreenUpdating = False Set abrirlibro = Workbooks.Open(Master) numrows = abrirlibro.Worksheets("MASTERFAMILIA").Cells(2, 2).End(xlDown).Row ListItems = abrirlibro.Worksheets("MASTERFAMILIA").Range("B2:B" & numrows) ListItems = Application.WorksheetFunction.Transpose(ListItems) For i = 1 To numrows - 1 ComboBox1.AddItem ListItems(i) ' populate the listbox Next i 'abrirlibro.Close False 'Set abrirlibro = Nothing End Sub Public Sub CommandButton1_Click() varfamilia = ComboBox1.value Unload UserForm1 End Sub

timestamp

由于有超过2k行,我无法通过完整的代码。

欢迎任何帮助。

问候!

1 个答案:

答案 0 :(得分:0)

你必须改变

Public pampm As Variant

Public pampm() As Variant

ReDim pampm(count)

ReDim Preserve pampm(count)