我正在尝试使用下面的代码来计算范围内的最小值和最大值,但是仍然需要获得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.Range(&#34; D&#34;&amp; x&amp;&#34;:&#34;&amp;&#34; D&#34;&amp; ; y):::
谢谢!
答案 0 :(得分:0)
而不是Data.Range("D" & x & ":" & "D" & y)
你应该使用像ThisWorkbook.Sheets("Data").Range("D" & x & ":" & "D" & y)
这样的东西 - 正如@Stefan Falk指出的那样,你还没有定义Data
答案 1 :(得分:0)
While
应在VBA中以Wend
终止
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
此编译 - 但x
未在循环中更新(我已注释掉x
更新供您填写)。此外,不确定这是否是您希望代码执行的操作,因为您尚未指定。
如果可能,应避免使用variant
。在某些情况下它很有用,但在这里你应该定义dim rng as Range
。
此外,未定义类型的使用(通常)将转换为Variant
类型。这意味着y
将是变体。如果你知道类型,你应该定义它。