Vba 使用Access以多种形式使用动态数组

Vba 使用Access以多种形式使用动态数组,vba,ms-access,Vba,Ms Access,使用单变量时,一切正常,动态数组出现问题 有一个带有全局变量的模块: Option Compare Database Option Explicit Global gbl_numberOfPositions As Integer Global gbl_numberOfDisciplines As Integer Global gbl_mv_clsJobPostions() As clsJobPostion Public Sub Init_Globals() gbl_numberOfP

使用单变量时,一切正常,动态数组出现问题

有一个带有全局变量的模块:

Option Compare Database
Option Explicit

Global gbl_numberOfPositions As Integer
Global gbl_numberOfDisciplines As Integer
Global gbl_mv_clsJobPostions() As clsJobPostion

Public Sub Init_Globals()
    gbl_numberOfPositions = 0
    gbl_numberOfDisciplines = 0
    ReDim gbl_mv_clsJobPostions(0)
End Sub
在第一种形式中,定义了动态数组

Private Sub Form_Load()

    Call Init_Globals
End Sub

Private Sub InitCBox()
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset(strSQL)
rs.MoveLast
ReDim gbl_mv_clsJobPositions(rs.RecordCount)
rs.MoveFirst
i = 1
Do While (Not rs.EOF)
    Set gbl_mv_clsJobPositions(i) = New clsJobPostion
    gbl_mv_clsJobPositions(i).InitializeMe _
        rs![ID Job Position], rs![ID Position], rs![ID Discipline]
    i = i + 1
    rs.MoveNext
Loop
Debug.Print UBound(gbl_mv_clsJobPositions)
End Sub
然后加载第二个:

Private Sub Form_Load()
    Debug.Print UBound(gbl_mv_clsJobPostions)
End Sub
然而,返回两个不同的值。在第二种情况下,它是零

所以我的问题是如何在表单之间传递动态数组?

来自另一个表单:

Public和Global在功能上几乎相同,但是Global只能在标准模块中使用,而Public可以在所有上下文(模块、类、控件、表单等)中使用。Global来自旧版本的VB,可能是为了向后兼容而保留的,但已完全被公众所取代。

来自另一个:

Public和Global在功能上几乎相同,但是Global只能在标准模块中使用,而Public可以在所有上下文(模块、类、控件、表单等)中使用。Global来自旧版本的VB,可能是为了向后兼容而保留的,但已被Public完全取代。

而不是:

ReDim gbl_mv_clsJobPositions(rs.RecordCount)
使用:

而不是:

ReDim gbl_mv_clsJobPositions(rs.RecordCount)
使用:


您似乎有两种不同的拼写,这可能是导致问题的原因:

  • gbl\u mv\u clsjobspositions
  • gbl\u mv\u clsJobPositions

另外,我想知道你为什么用这个:

Global gbl_mv_clsJobPostions() As clsJobPostion
                                  -------------

为什么不将
用作字符串、变量或其他标准变量类型?

您似乎有两种不同的拼写,这可能会导致问题:

  • gbl\u mv\u clsjobspositions
  • gbl\u mv\u clsJobPositions

另外,我想知道你为什么用这个:

Global gbl_mv_clsJobPostions() As clsJobPostion
                                  -------------

为什么不将
用作字符串
、变量或其他标准变量类型?

如果我在Init_Globals()中写入ReDim gbl_mv_clsjobspositions(4),那么从第二个表单load sub接收4作为数组的大小。如果我在Init_Globals()中写入ReDim gbl_mv_clsjobspositions(4),更重要的是然后从第二个表单load sub接收到4作为数组的大小。现在大小是正确的,但数组中的数据不同。看起来数组是以两种形式独立创建的。现在大小合适,但数组中的数据不同。看起来数组是以两种形式独立创建的。您有任何进展吗?是的,一切正常:)。我纠正了所有的拼写错误,并保留了所有的地方,它的工作!好!!为了我的幸福,也为了帮助下一个需要帮助的人,请单击“接受”最有用的答案。你有什么进展吗?是的,一切正常:)。我纠正了所有的拼写错误,并保留了所有的地方,它的工作!好!!为了我的幸福,也为了帮助下一个需要帮助的人,请点击“接受”最有用的答案。