2015-08-21 48 views
0

我试图创建一个优化直方图的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

你有什么错误? – ShaneC

回答

0

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

Dim Data() 

Dim Data as Variant 

注意没有括号。另外,作为一个风格点,我认为明确这个类型是很好的,尽管Variant是默认值。

这可能是足以让你的代码工作,但如果你想要的是最小范围内,你可以改变

Set Data = Range(data_range) 

Data = Range(data_range).Value 

如果纸张“数据”不是活动工作表,并且包含“B4:M12”,则需要使用

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

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

+0

谢谢,@JohnColeman - 非常感谢! –