2014-09-01 23 views
0

我想使用下面的代碼來找出範圍內的最小值和最大值,但不斷收到424錯誤所需的對象,有誰知道爲什麼?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.Range("D" & x & ":" & "D" & y) 
minimum = Application.WorksheetFunction.Min(rng) 
maximum = Application.WorksheetFunction.Max(rng) 

錯誤發生在:::設置RNG = Data.Range( 「d」 & X & 「:」 & 「d」 & y)的:::

謝謝!

+0

請格式化您的代碼..什麼行導致錯誤?你調試了嗎? – displayname 2014-09-01 18:03:10

+0

嗨,林不知道你的意思是格式。但錯誤發生在: 設置rng = Data.Range(「D」&x&「:」&「D」&y) 我試圖尋找替代解決方案,但無法找到任何。 – user3457548 2014-09-01 18:08:10

+1

不應該有一個'End Sub'和一個'End While'語句?我不知道你的方法中有什麼數據。但也許看看這個http://msdn.microsoft.com/en-us/library/office/ff838238%28v=office.15%29.aspx – displayname 2014-09-01 18:38:18

回答

0

相反的Data.Range("D" & x & ":" & "D" & y)你應該使用類似ThisWorkbook.Sheets("Data").Range("D" & x & ":" & "D" & y) - 作爲@Stefan福爾克指出的那樣,你還沒有定義Data

0

WhileWend在VBA

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將是變體。如果你知道類型,你應該定義它。

相關問題