如何 return 数组中的多个值 - Excel VBA
How to return multiple values in an Array - Excel VBA
我正在尝试 return 将多个值存储在一个数组中。 我不太确定如何描述它,但我想做的是在 A1 中输出 0,在 B1 中输出 37.2,在 C1 中输出 5.51,在 D1 中输出 0.498,在 A2 中输出 4.17,在 B2 中输出 36.7等
我当前的代码是
For j = 1 to nw
For k = 1 to 4
tWB.Sheets("Data").Cells(j, k) = A(j)
Next k
Next j
这是我第一次发帖,所以我不确定发帖的礼节,所以如果需要更多信息,我可以尝试提供。
这是完整的代码
Option Explicit
Option Base 1
Sub DataMerge()
Dim FileNames As Variant, A() As Variant
Dim i As Integer, nw As Integer, j As Integer, k As Integer
Dim UserRange As Range, ImportRange As String
Dim tWB As Workbook, aWB As Workbook
Set tWB = ThisWorkbook
FileNames = Application.GetOpenFilename(FileFilter:="Excel Filter(*.csv),*.csv", Title:="Open File(s)", MultiSelect:=True)
Workbooks.Open FileNames(1)
Set UserRange = Application.InputBox(Prompt:="Select Range: ", Title:="Import Range", Type:=8)
ImportRange = UserRange.Address
nw = UBound(FileNames)
ReDim A(nw) As Variant
For i = 1 To nw
Workbooks.Open FileNames(i)
Set aWB = ActiveWorkbook
A(i) = aWB.Sheets(1).Range(ImportRange)
aWB.Close SaveChanges:=False
Next i
tWB.Activate
For j = 1 to nw
For k = 1 to 4
tWB.Sheets("Data").Cells(j, k) = A(j)
Next k
Next j
End Sub
您的代码非常接近。相反:
For j = 1 to nw
For k = 1 to 4
tWB.Sheets("Data").Cells(j, k) = A(j)(k,1)
Next k
Next j
我正在尝试 return 将多个值存储在一个数组中。
我当前的代码是
For j = 1 to nw
For k = 1 to 4
tWB.Sheets("Data").Cells(j, k) = A(j)
Next k
Next j
这是我第一次发帖,所以我不确定发帖的礼节,所以如果需要更多信息,我可以尝试提供。
这是完整的代码
Option Explicit
Option Base 1
Sub DataMerge()
Dim FileNames As Variant, A() As Variant
Dim i As Integer, nw As Integer, j As Integer, k As Integer
Dim UserRange As Range, ImportRange As String
Dim tWB As Workbook, aWB As Workbook
Set tWB = ThisWorkbook
FileNames = Application.GetOpenFilename(FileFilter:="Excel Filter(*.csv),*.csv", Title:="Open File(s)", MultiSelect:=True)
Workbooks.Open FileNames(1)
Set UserRange = Application.InputBox(Prompt:="Select Range: ", Title:="Import Range", Type:=8)
ImportRange = UserRange.Address
nw = UBound(FileNames)
ReDim A(nw) As Variant
For i = 1 To nw
Workbooks.Open FileNames(i)
Set aWB = ActiveWorkbook
A(i) = aWB.Sheets(1).Range(ImportRange)
aWB.Close SaveChanges:=False
Next i
tWB.Activate
For j = 1 to nw
For k = 1 to 4
tWB.Sheets("Data").Cells(j, k) = A(j)
Next k
Next j
End Sub
您的代码非常接近。相反:
For j = 1 to nw
For k = 1 to 4
tWB.Sheets("Data").Cells(j, k) = A(j)(k,1)
Next k
Next j