我正在尝试创建一个优化直方图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
答案 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
返回活动工作表上的范围,除非通过对工作表的引用明确限定。