从不同的纸张参考范围

时间:2015-08-21 10:18:50

标签: arrays vba range runtime-error histogram

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

我希望直方图的数据在任何工作表上,在本例中为“数据”!B4:M12。这在我希望直方图出现的表格的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

1 个答案:

答案 0 :(得分:0)

您正在尝试将变量数组设置为等于范围 - 但由于无法分配给数组,因此无法实现。您可以为简单的Variant(或Range变量)指定范围。你可以改变

Dim Data()

Dim Data as Variant

注意没有括号。另外,作为一个风格点,我认为尽管Variant是默认类型,但明确表达类型是件好事。

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

Set Data = Range(data_range)

Data = Range(data_range).Value

如果工作表“数据”不是活动工作表而data_range包含“B4:M12”那么您需要使用

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

因为Range返回活动工作表上的范围,除非通过对工作表的引用明确限定。