2015-08-21 46 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 - 非常感謝! –