Excel 如何设置数组';是否将s值作为工作表的第一行?
我试图创建一个数组,其中值来自工作表的第一行,然后在另一张表中打印这些值 我尝试读取Sheet2的第一行,将每个值存储在数组中,直到找到一个空单元格,然后在Sheet3的第一行打印该数组 我在while循环中得到了一个应用程序定义的错误,我要确保行不等于NullExcel 如何设置数组';是否将s值作为工作表的第一行?,excel,vba,while-loop,Excel,Vba,While Loop,我试图创建一个数组,其中值来自工作表的第一行,然后在另一张表中打印这些值 我尝试读取Sheet2的第一行,将每个值存储在数组中,直到找到一个空单元格,然后在Sheet3的第一行打印该数组 我在while循环中得到了一个应用程序定义的错误,我要确保行不等于Null Private Sub createFormatSheet() With Worksheets("Sheet2") Dim myTags() As Variant Dim tag As Var
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
Private子createFormatSheet()
带工作表(“表2”)
Dim myTags()作为变量
作为变体的Dim标记
变暗rw As范围
作为整数的Dim i
i=1
对于行中的每个rw
而rw(i,1)为空
myTags=数组(rw(i,1))
i=i+1
温德
下一个rw
以
带工作表(“表3”)
i=1
对于myTag中的每个标记
.单元格(i,1).值=标记
下一个标签
以
端接头
以下是两种方法:
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
让我知道它是否有效您似乎没有引用要循环通过的单元格。谢谢您,我感谢您的帮助!但是我确实认为我的问题措辞有点糟糕,因为我实际上只是试图阅读第一行,而不是第一列。我更改了您提供的代码,并将xlDown更改为xlToRight以阅读行1而不是列A
startRow=1
endRow=sourceSheet.Cells(startRow,1).End(xlToRight).column