我有这段代码可以将数据读入数组。
Public Const DATASHEET As String = "Data Entry"
由于某些原因,它起作用:
Function SomeCalculation(col As Integer) As Double
Dim data_table As Variant
Dim lastrow as Integer
lastrow = Worksheets(DATASHEET).Cells(Worksheets(DATASHEET).Rows.Count, col).End(xlUp).row
data_table = Range(Cells(1, col), Cells(lastrow, col + 5)).Value
但这失败了:
Function SomeCalculation(col As Integer) As Double
Dim data_table As Variant
Dim lastrow as Integer
lastrow = Worksheets(DATASHEET).Cells(Worksheets(DATASHEET).Rows.Count, col).End(xlUp).row
data_table = Worksheets(DATASHEET).Range(Cells(1, col), Cells(lastrow, col + 5)).Value
VBA在尝试执行最后一行时抛出错误。
第一个代码块的问题当然是我的数据存储在另一个工作表上的函数所在的单元格中。
有人有什么想法为什么会失败,和/或实现同一件事的另一种方法吗?
请注意,最大行有效(计算右表中的行)
谢谢!
答案 0 :(得分:0)
尝试替换
data_table = Worksheets(DATASHEET).Range(Cells(1, col), Cells(lastrow, col + 5)).Value
使用
with Worksheets(DATASHEET)
data_table = Range(.Cells(1, col), .Cells(lastrow, col + 5)).Value
end with
答案 1 :(得分:0)
只需完全引用单元格即可
data_table = Worksheets(DATASHEET).Range( _
Worksheets(DATASHEET).Cells(1, col), _
Worksheets(DATASHEET).Cells(lastrow, col + 5)
).Value
此外,请使用Long
而不是Integer
-整数在VBA中始终以long形式存储,因此它们会占用尽可能多的空间,只会给您更窄的数字范围。