Excel VBA,尝试在变量范围内查找最小值和最大值?获取424错误

Excel VBA,尝试在变量范围内查找最小值和最大值?获取424错误,excel,vba,Excel,Vba,我试图使用下面的代码来计算一个范围内的最小值和最大值,但仍然需要一个424错误对象,有人知道为什么吗 Sub stochastic() lr = ThisWorkbook.Sheets("Data").Cells(Rows.count, 1).End(xlUp).row x = 2 Dim rng As Variant Dim minimum As Double Dim maximum As Double While x < lr y = x + 13 Set rng = Data.

我试图使用下面的代码来计算一个范围内的最小值和最大值,但仍然需要一个424错误对象,有人知道为什么吗

Sub stochastic()
lr = ThisWorkbook.Sheets("Data").Cells(Rows.count, 1).End(xlUp).row
x = 2
Dim rng As Variant
Dim minimum As Double
Dim maximum As Double

While x < lr
y = x + 13


Set rng = Data.Range("D" & x & ":" & "D" & y)
minimum = Application.WorksheetFunction.Min(rng)
maximum = Application.WorksheetFunction.Max(rng)
错误发生在:::Set rng=Data.RangeD&x&:&D&y:::

谢谢

而不是Data.RangeD&x&:&D&y您应该使用类似于此工作簿的东西。SheetsData.RangeD&x&:&D&y-正如@Stefan Falk所指出的,您还没有定义数据

,而应该在VBA中以Wend终止

这会编译-但是x不会在循环中更新我已经注释掉了x更新供您填写。另外,不确定这是否是您希望代码执行的操作,因为您没有指定

如果可能,应避免使用变体。在某些情况下,它是有用的,但在这里您应该将dim rng定义为Range


此外,未定义类型的使用通常会转换为变量类型。这意味着y将是变体。如果你知道类型,你应该定义它。

请格式化你的代码。。哪一行导致了错误?你调试过吗?嗨,我不知道你说的格式是什么意思。但是错误发生在:Set rng=Data.range&x&:&D&y我正在尝试寻找替代解决方案,但找不到任何解决方案。是否应该在某个地方有一个End Sub和End While语句?我不知道你的方法里有什么数据。但是看看这个@user3457548,我不明白为什么默认情况下不强制要求显式声明所有变量。请在“工具/选项编辑器”下设置该选项,并将“选项显式”放置在宏的开头。如果您这样做了,您就不会得到该错误,因为给出错误的行中的数据没有定义这一事实将被标记。你会意识到那是一个非法的构造。
Sub stochastic()
lr = ThisWorkbook.Sheets("Data").Cells(Rows.Count, 1).End(xlUp).Row
x = 2
Dim rng As Variant
Dim minimum As Double
Dim maximum As Double

While x < lr
y = x + 13
    Set rng = ThisWorkbook.Sheets("Data").Range("D" & x & ":" & "D" & y)
    minimum = Application.WorksheetFunction.Min(rng)
    maximum = Application.WorksheetFunction.Max(rng)
    'x=x+??
Wend
End Sub