【发布时间】:2021-08-08 16:40:04
【问题描述】:
我在 VBA 上练习了一个月,但遇到了一些问题。我想通过此循环从工作表中的数据创建数组,但它不起作用。我有 6 个工作表,但它只能将一个工作表放入数组中。我认为这个循环中的问题是 DataArray 但我无法解决。
Sub LoopByArray()
Dim ws As Worksheet
Dim LastRow As Long
Dim LastCol As Long
Dim DataArray() As Variant
Dim Sheetnum As String
Dim SheetNames()
Dim i As Long
SheetCount = ActiveWorkbook.Sheets.Count
ReDim SheetNames(1 To SheetCount)
For i = 1 To SheetCount
SheetNames(i) = ActiveWorkbook.Sheets(i).Name
Debug.Print SheetNames(i)
Sheetnum = i
Set ws = worksheets(SheetNames(i))
LastRow = ThisWorkbook.Sheets(SheetNames(i)).Range("A" & Rows.Count).End(xlUp).Row
Debug.Print LastRow
LastCol = ThisWorkbook.Sheets(SheetNames(i)).Cells(1, ThisWorkbook.Sheets(SheetNames(i)).Columns.Count).End(xlToLeft).Column
Debug.Print LastCol
ColLetter = GetColumnLetter(LastCol)
DataArray = ThisWorkbook.Sheets(SheetNames(i)).Range("A1" & ":" & ColLetter & LastRow).Value
Next i
End Sub
Function GetColumnLetter(colNum As Long) As String
Dim vArr
vArr = Split(Cells(1, colNum).Address(True, False), "$")
GetColumnLetter = vArr(0)
End Function
【问题讨论】:
-
您想要一个包含所有工作表数据的数组吗?如果(例如)不同的工作表有不同的行数或列数,应该如何安排?
-
我想我应该创建更多数组来获取另一个工作表,但我不知道如何将它们添加到这个循环中。
-
是否可以创建循环或其他函数来根据 VBA 中的工作表数定义数组变量?
-
你打算用数组做什么?
-
我尝试获取数据并在数组中使用 vlookup,因为我认为它会比在工作表中更快。