引用来自不同 sheet 的范围

Reference a range froma different sheet

我正在尝试创建一个优化直方图 bin 宽度的程序...虽然在此之前,我需要帮助完成一项看似简单的任务 - 将单元格中提到的范围设置为 VBA 数组。

我希望直方图的数据位于任何 sheet 上,在本例中为 'Data'!B4:M12。这在sheet的D4中提到了我希望直方图出现在上面。但是,当我 运行 我的代码时,即使多次更改它,我仍然会收到错误消息。显然存在语法错误,我不知道如何处理。

如有任何帮助,我们将不胜感激!

Sub Histogram_Shimazaki_Shinomoto()

Dim data_range As String, min_bins As Integer, max_bins As Integer
Dim Data()
Dim x_min As Double, x_max As Double

data_range = Cells(4, 4)    ' data range
min_bins = Cells(5, 4)      ' min # of bins
max_bins = Cells(6, 4)      ' max # of bins

Set Data = Range(data_range)

x_min = WorksheetFunction.Min(Data)

MsgBox x_min

End Sub

您正在尝试将一个变体数组设置为一个范围 -- 但这是不可能的,因为您无法分配给一个数组。您可以将范围分配给一个简单的 Variant(或 Range 变量)。你可以改变

Dim Data()

Dim Data as Variant

请注意没有括号。此外,作为一种文体观点,我认为明确类型是很好的,即使 Variant 是默认值。

这可能足以让您的代码正常工作,但如果您只需要范围内的最小 ,您可以更改

Set Data = Range(data_range)

Data = Range(data_range).Value

如果 sheet "Data" 不是活动的 sheet 并且 data_range 包含 "B4:M12" 那么您需要使用

Data = Sheets("Data").Range(data_range).Value

因为 Range returns 活动范围 sheet 除非通过对 sheet.

的引用明确限定