【问题标题】:Reference a range froma different sheet引用不同工作表中的范围
【发布时间】:2015-08-21 10:18:50
【问题描述】:

我正在尝试创建一个优化直方图 bin 宽度的程序...不过,在此之前,我需要一个看似简单的任务的帮助 - 将单元格中提到的范围设置为 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

【问题讨论】:

  • 你遇到了什么错误?

标签: arrays vba range runtime-error histogram


【解决方案1】:

您正在尝试将一个变体数组设置为一个范围 - 但这是不可能的,因为您无法分配给一个数组。您可以将范围分配给简单的 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 在活动工作表上返回一个范围,除非通过对工作表的引用明确限定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 2014-09-27
    • 2015-10-12
    • 2014-10-06
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多