您好,我是VBA的新手,正在尝试创建一个数组,该数组的值来自我拥有的工作表的第一行,然后将这些值打印在另一张工作表中。到目前为止,我已经尝试读取Sheet2的第一行,将每个值存储在数组中,直到我碰到一个空单元格,然后在Sheet3的第一行中打印该数组。
我在while循环中收到应用程序定义的错误,在该循环中,我确保行不等于Null,并且不确定原因。这是我到目前为止的代码:
Private Sub createFormatSheet()
With Worksheets("Sheet2")
Dim myTags() As Variant
Dim tag As Variant
Dim rw As Range
Dim i As Integer
i = 1
For Each rw In .Rows
While rw(i, 1) <> Null
myTags = Array(rw(i, 1))
i = i + 1
Wend
Next rw
End With
With Worksheets("Sheet3")
i = 1
For Each tag In myTag
.Cells(i, 1).Value = tag
Next tag
End With
End Sub
这里有两种方法:
使用F8
逐步执行代码,查看正在发生的事情
Private Sub createFormatSheet() Dim sourceSheet As Worksheet Dim targetSheet As Worksheet Dim startRow As Long Dim endRow As Long Dim values As Variant Set sourceSheet = ThisWorkbook.Worksheets("Sheet2") Set targetSheet = ThisWorkbook.Worksheets("Sheet3") ' Array approach (no need to loop) source = column 1 startRow = 1 endRow = sourceSheet.Cells(startRow, 1).End(xlDown).Row values = sourceSheet.Range(sourceSheet.Cells(startRow, 1), sourceSheet.Cells(endRow, 1)).Value ' Target = column 1 targetSheet.Cells(startRow, 1).Resize(endRow, 1).Value = values ' Direct range target column 2 targetSheet.Cells(startRow, 2).Resize(endRow, 1).Value = sourceSheet.Range(sourceSheet.Cells(startRow, 1), sourceSheet.Cells(endRow, 1)).Value End Sub
让我知道是否可行