繁体   English   中英

excel VBA不同的工作表范围到数组

[英]excel VBA different worksheet Range to Array

我有这段代码将数据读入数组。

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在尝试执行最后一行时引发错误。

第一个代码块的问题当然是我的数据存储在另一个工作表上的函数所在的单元格中。

有谁知道为什么会失败,和/或实现同一件事的另一种方法?

请注意,maxrows行有效(计算右工作表中的行)

谢谢!

尝试更换

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

只是完全引用单元格:

data_table = Worksheets(DATASHEET).Range( _
  Worksheets(DATASHEET).Cells(1, col), _
  Worksheets(DATASHEET).Cells(lastrow, col + 5)
).Value

另外,请使用Long而不是Integer整数无论如何都以long形式存储在VBA中,因此它们会占用尽可能多的空间,只会给您更窄的数字范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM