矩阵 -for 和 -each 语句 vba
matrix -for and -each statements vba
我以前得到过帮助并在此处显示了数组我想将其开发成矩阵,因为我还有几个包含这些子文件夹的文件夹
这部分是我想象的矩阵的样子
我看到的唯一示例建议在 excel 中使用 table,其中 vba 可以使用 -next 命令移动它的 (x,y) 坐标。我想知道是否有一种方法可以通过 vba 中的语法来做到这一点,而无需引用 excel 中的 table?
upperFolders = Array("foldernames1", "foldernames2", "foldernames3",
folderNames1 = Array("Folder1", "Folder2", "Folder3")
folderNames2 = Array("Folder4", "Folder5", "Folder6")
folderNames3 = Array("Folder7", "Folder8", "Folder9")
mainFolder = "C:\xxxxxx\"
前面post给我的完整代码和矩阵
Dim Myfile As String, MyFolder As String, NewFile As String, SubFolder As String
Sub SpecificFileTypeInSpecificFolders()
'
Dim myFile As String
Dim subFolder As Variant
Dim folderNames As Variant
Dim mainFolder As String
'想用矩阵替换下面的
folderNames = Array("Folder1", "Folder2", "Folder3")
'给出的其余代码
mainFolder = "C:\xxxxxx\"
For Each subFolder In folderNames
MsgBox subFolder
myFile = Dir(mainFolder & subFolder & "\*.csv")
Do While myFile <> ""
MsgBox myFile
myFile = Dir
Loop
Next subFolder
End Sub
你是说这种事吗?:
Function MakeMatrix(ParamArray Arrays() As Variant) As Variant
'assumes that function is passed a collection of 0-based arrays
'all with the same upper bound
'returns a 0-based 2-dimensional variant array with the same values
Dim Matrix As Variant
Dim m As Long, n As Long, i As Long, j As Long
m = UBound(Arrays)
n = UBound(Arrays(0))
ReDim Matrix(0 To m, 0 To n)
For i = 0 To m
For j = 0 To n
Matrix(i, j) = Arrays(i)(j)
Next j
Next i
MakeMatrix = Matrix
End Function
Sub test()
Dim folderNames1, folderNames2, folderNames3 'all variant
Dim myMatrix As Variant
folderNames1 = Array("Folder1", "Folder2", "Folder3")
folderNames2 = Array("Folder4", "Folder5", "Folder6")
folderNames3 = Array("Folder7", "Folder8", "Folder9")
myMatrix = MakeMatrix(folderNames1, folderNames2, folderNames3)
Debug.Print myMatrix(1, 1)
Debug.Print myMatrix(2, 2)
End Sub
输出:
Folder5
Folder9
我以前得到过帮助并在此处显示了数组
这部分是我想象的矩阵的样子 我看到的唯一示例建议在 excel 中使用 table,其中 vba 可以使用 -next 命令移动它的 (x,y) 坐标。我想知道是否有一种方法可以通过 vba 中的语法来做到这一点,而无需引用 excel 中的 table?
upperFolders = Array("foldernames1", "foldernames2", "foldernames3",
folderNames1 = Array("Folder1", "Folder2", "Folder3")
folderNames2 = Array("Folder4", "Folder5", "Folder6")
folderNames3 = Array("Folder7", "Folder8", "Folder9")
mainFolder = "C:\xxxxxx\"
前面post给我的完整代码和矩阵
Dim Myfile As String, MyFolder As String, NewFile As String, SubFolder As String
Sub SpecificFileTypeInSpecificFolders()
'
Dim myFile As String
Dim subFolder As Variant
Dim folderNames As Variant
Dim mainFolder As String
'想用矩阵替换下面的
folderNames = Array("Folder1", "Folder2", "Folder3")
'给出的其余代码
mainFolder = "C:\xxxxxx\"
For Each subFolder In folderNames
MsgBox subFolder
myFile = Dir(mainFolder & subFolder & "\*.csv")
Do While myFile <> ""
MsgBox myFile
myFile = Dir
Loop
Next subFolder
End Sub
你是说这种事吗?:
Function MakeMatrix(ParamArray Arrays() As Variant) As Variant
'assumes that function is passed a collection of 0-based arrays
'all with the same upper bound
'returns a 0-based 2-dimensional variant array with the same values
Dim Matrix As Variant
Dim m As Long, n As Long, i As Long, j As Long
m = UBound(Arrays)
n = UBound(Arrays(0))
ReDim Matrix(0 To m, 0 To n)
For i = 0 To m
For j = 0 To n
Matrix(i, j) = Arrays(i)(j)
Next j
Next i
MakeMatrix = Matrix
End Function
Sub test()
Dim folderNames1, folderNames2, folderNames3 'all variant
Dim myMatrix As Variant
folderNames1 = Array("Folder1", "Folder2", "Folder3")
folderNames2 = Array("Folder4", "Folder5", "Folder6")
folderNames3 = Array("Folder7", "Folder8", "Folder9")
myMatrix = MakeMatrix(folderNames1, folderNames2, folderNames3)
Debug.Print myMatrix(1, 1)
Debug.Print myMatrix(2, 2)
End Sub
输出:
Folder5
Folder9