2015-08-21 4 views
0

Я пытаюсь создать программу, которая оптимизирует ширину корзины гистограмм ... до этого, хотя мне нужна помощь с кажущейся простой задачей - установка диапазона, упомянутого в ячейке, в массив 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 

Если лист «Данные» не являются активным листом, а data_range содержит «B4: M12», тогда вам нужно будет использовать

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

с Range возвращает диапазон на активном листе, если явно не указан ссылкой на лист.

+0

Спасибо, @JohnColeman - очень ценим! –

Смежные вопросы