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.