【发布时间】:2019-12-07 14:13:06
【问题描述】:
下面的代码应该打印出一个生成的矩阵。我可以从 Locals 窗口看到,Matrix 保存了 202 行和 4 列的值。
但是最后一行:
Worksheets("Sheet6").Range("C" & ExportToLine) = Matrix
只打印出矩阵中的第一个值,如 (1,1)。我究竟做错了什么?我在这里尝试了很多不同的变量..
Sub MatrixPrint()
Dim lr1 As Long
Dim lr2 As Long
Dim x As Long
Dim arr As Range
Dim rng As Variant, cl As Range
Dim ws As Worksheet
Dim i As Long
Dim Matrix As Variant
With Sheet2
lr1 = Worksheets("ExampleOne").Cells(.Rows.Count, 1).End(xlUp).Row
Set arr = Worksheets("ExampleOne").Range("K2:K" & lr1 + 1)
End With
'Define cash receipt range from which to look from
With Blad16
lr2 = Worksheets("ExampleTwo").Cells(.Rows.Count, 6).End(xlUp).Row
rng = Worksheets("ExampleTwo").Range("F20:F" & lr2)
End With
x = 0
For i = LBound(rng) To UBound(rng)
Set C1 = arr.Find(rng(i, 1), LookIn:=xlValues)
If C1 Is Nothing Then
Else
x = x + 1
End If
Next i
Dim arr2 As Variant
Dim rng2 As Range
With Sheet2
lr1 = Worksheets("ExampleOne").Cells(.Rows.Count, 1).End(xlUp).Row
arr2 = Worksheets("ExampleOne").Range("A2:K" & lr1 + 1)
End With
With Blad16
lr2 = Worksheets("ExampleTwo").Cells(.Rows.Count, 6).End(xlUp).Row
Set rng2 = Worksheets("ExampleTwo").Range("F20:F" & lr2)
End With
ReDim Matrix(1 To UBound(arr2) - x, 1 To 4)
x = 1
For i = LBound(arr2) To UBound(arr2) - 1
Set c2 = rng2.Find(arr2(i, 11), LookIn:=xlValues)
If c2 Is Nothing Then
Matrix(x, 1) = arr2(i, 3)
Matrix(x, 2) = arr2(i, 4)
Matrix(x, 3) = arr2(i, 8)
Matrix(x, 4) = arr2(i, 11)
x = x + 1
Else
End If
Next i
Debug.Print (x)
Worksheets("Sheet6").Select
ExportToLine = 16
Worksheets("Sheet6").Range("C" & ExportToLine) = Matrix
End Sub
【问题讨论】: