redim multidimensionales llenar ejemplo dinamico arreglos array arrays vba ms-access access-vba listboxitems

arrays - multidimensionales - Acceda al bucle VBA a través de la lista de elementos seleccionados y agréguelo a la matriz



vb6 array (3)

1) declara la matriz. Eche un vistazo a https://msdn.microsoft.com/en-us/library/wak0wfyt.aspx

2) Sin necesidad de variable de soporte

3) Asigne los valores a su matriz con la sintaxis correcta

Private Sub exportfolders_Click() Dim folderarray() As String Dim i As Interger Redim folderarray (Me.selectedfolders.ListCount-1) For i = 0 To Me.selectedfolders.ListCount - 1 folderarray(i) = Me.selectedfolders.Column(0, i) Next i '' Write here what you want to do with your array End Sub

Estoy intentando recorrer un cuadro de lista y agregar el contenido a una matriz ...

Mi código es este:

Private Sub exportfolders_Click() Dim list As String Dim folderlist As String Dim folderarray() As String ''Dim i As Interger For i = 0 To Me.selectedfolders.ListCount - 1 ''folderlist = (Me.selectedfolders.Column(0, i)) ''folderarray() = Join(Me.selectedfolders.Column(0, i), ",") list = (Me.selectedfolders.Column(0, i)) folderarray() = Join(list, ",") ReDim Preserve folderarray(i) Next i folderlist = folderarray ''folderarray() = Join(folderlist, ",") MsgBox (folderlist) End Sub

Puedes ver los bits que he comentado, intentando todo para que funcione. Pero sigo recibiendo el mensaje "No se puede asignar a la matriz" en folderarray(i) = Join(list, ",") . ¿Alguna sugerencia sobre dónde estoy fallando?


Podrías probar algo como esto:

Private Sub ListToArray() Dim folderArray() As Variant Dim currentValue As String Dim currentIndex As Integer Dim topIndex As Integer topIndex = Me.selectedfolders.ListCount - 1 ReDim folderArray(0 To topIndex, 0 To 1) For i = 0 To topIndex currentValue = Me.selectedfolders.Column(0, i) folderArray(i, 0) = i folderArray(i, 1) = currentValue Next i End Sub

Tenga en cuenta que mi ejemplo es una matriz multidimensional que le dará la posibilidad de agregar más de un elemento si así lo desea. En este ejemplo, agregué el valor de "i" como marcador de posición / índice.


Puede concatenar los elementos del cuadro de lista en una cadena y luego usar Split() para cargar su matriz. De esta forma, la matriz se dimensiona de forma automática sin que necesite ReDim .

Probé este código en Access 2010:

Dim folderarray() As String Dim i As Long Dim strList As String For i = 0 To Me!selectedfolders.ListCount - 1 strList = strList & "," & Me!selectedfolders.Column(0, i) Next '' use Mid() to exclude the first comma ... folderarray = Split(Mid(strList, 2), ",")

Tenga en cuenta que no sé qué quiere hacer con la matriz después de cargarla. MsgBox folderarray lanzaría Error de discrepancia de tipo . MsgBox Mid(strList, 2) sería válido, pero si eso es lo que desea, no necesitaría la matriz.