如何在VBA中执行全局字符串数组



我正在访问访问,我需要从一种表单发送到另一种表单,所以我想使用string((,但是应用程序不想要它。/p>

有什么建议?

update

我有一个带有2个文本框的表单,每个文本框都将带有相同语法的数据,例如TextBox1:" John" TextBox2:" David"我有并为每个文本框添加按钮,它们在不同的数组中存储每个值。添加按钮正在检查每个文本框的值是否存在2个不同表中,Tabtbox1和table2 for Textbox2中是否存在。如果存在,我需要保留它们,直到用户按下另一个加载第二个表格的按钮为止。用户可以在每个文本框中设置无限的值,通过在设置新值时按添加。

,当我加载第二种形式时,我需要保留每个表中存在但分离的值,但要根据每个值加载一些数据。

所有人都在工作,除了我不知道如何将2个数组从表单1传递到形式2,带有textbox1值的数组1,而阵列2则带有textbox22

的值

如果您需要在加载表单时将其传递,则可以将值串联到单个字符串并通过.OpenArgs

在另一个形式的加载事件上,您可以拆分字符串并创建一个数组。

DoCmd.OpenForm "FormName", acNormal, , , acFormPropertySettings, acWindowNormal, "String1;String2;String3;String4"
'...
Private Sub Form_Load()
    Dim arr As Variant
    With Me
        If Not IsNull(.OpenArgs) Then
            arr = Split(.OpenArgs, ";")
        End If
    End With
End Sub

更新1:

您可以这样构建.OpenArgs字符串:

dim oneString as String
With Me
    oneString = .YourtextBoxName1.Value & ";" & .YourtextBoxName2.Value 'etc...
End With
DoCmd.OpenForm "FormName", acNormal, , , acFormPropertySettings, acWindowNormal, oneString

更新2:

将其放在标准模块中:

Private mArrValues() As Variant
'ArrayValues
Public Property Get ArrayValues() As Variant
    ArrayValues = mArrValues()
End Property
'Add value to array
Public Sub AddToArrayValues(ByVal index As Integer, value As String)
    ReDim Preserve mArrValues(0 To index)
    mArrValues(index) = value
End Sub
'Erase
Public Sub EraseArrayValues()
    Erase mArrValues
End Sub

您可以在这样的数组中添加值:

Module1.AddToArrayValues 0, "Thomas"
Module1.AddToArrayValues 1, "Henry"
Module1.AddToArrayValues 2, "Bob"

您可以通过索引检索值:

Dim i As Integer
For i = LBound(Module1.ArrayValues) To UBound(Module1.ArrayValues)
    Debug.Print Module1.ArrayValues(i)
Next i
'Thomas
'Henry
'Bob

一定会忘记您需要删除数组,然后再重新填充数组:

Module1.EraseArrayValues

最新更新