返回列表 上一主題 發帖

[發問] 可正常顯示執行結果,可是會出現偵錯

[發問] 可正常顯示執行結果,可是會出現偵錯

本帖最後由 jesscc 於 2011-4-18 23:44 編輯
  1. Sub NewShBtn_Click()
  2. If OptionButton1 = True Then
  3. Dim i As Integer, rng As Range, y As WorksheetFunction
  4. Set y = WorksheetFunction
  5. Range("B3:E8000").Font.ColorIndex = 0
  6. For i = 2 To 5
  7. Set rng = Cells(3, i).Resize(8000)
  8. Cells(rng.Find(y.Max(rng), lookat:=xlWhole).Row, i).Font.ColorIndex = 3
  9. Cells(rng.Find(y.Min(rng), lookat:=xlWhole).Row, i).Font.ColorIndex = 10
  10. Next
  11. End If
  12. ...
  13. ...
複製代碼
這段代碼可以正常執行出結果,可是在第八行會出現偵錯:

執行階段錯誤'91':
沒有設定物件變數或With區塊變數

是哪裡有問題嗎?
Jess

既然rng是在循環中的變量
第8行這樣即可
rng.Find(y.Max(rng), lookat:=xlWhole).Font.ColorIndex = 3
出現偵錯視窗應該是某次rng範圍沒有數字

TOP

這次又出現

執行階段錯誤'1004':
無法取得類別 WorksheetFunction 的Max屬性

會不會是Max函數無法對空值的Cells做處理?
Jess

TOP

我已經確定問題所在,如同大大說的,某次rng範圍沒有數字或是非數字、空值的時候就會產生這種錯誤,有沒有辦法讓MAX函數忽略這種情形呢?
Jess

TOP

回復 4# jesscc
For i = 2 To 5
    Set rng = Cells(3, i).Resize(8000)
    If y.Max(rng) Then
        Cells(rng.Find(y.Max(rng), lookat:=xlWhole).Row, i).Font.ColorIndex = 3
        Cells(rng.Find(y.Min(rng), lookat:=xlWhole).Row, i).Font.ColorIndex = 10
    End If
Next

TOP

可以正常執行了,謝謝大大。
加入的這段:
If y.Max(rng) Then
代表什麼意思呢?
最重要的一句,可是卻最感受不到它的重要性!
Jess

TOP

  1. Range("E3:E3000").Value = Range("E3:E3000").Value
  2. If OptionButton1 = True Then
  3. Dim i As Integer, rng As Range, y As WorksheetFunction
  4. Range("B3:E3000").Font.ColorIndex = 0
  5. Set y = WorksheetFunction
  6. Range("B3:E3000").Font.ColorIndex = 0
  7. For i = 2 To 5
  8. Set rng = Cells(3, i).Resize(3000)
  9. Cells(rng.Find(y.Max(rng), lookat:=xlWhole).Row, i).Font.ColorIndex = 3
  10. Cells(rng.Find(y.Min(rng), lookat:=xlWhole).Row, i).Font.ColorIndex = 10
  11. Next
  12. End If
複製代碼
剛剛又試了一次,發現還是會出錯,乾脆我就把 Cells 裏的公式,直接轉為數值,這樣就Ok了。
Jess

TOP

        靜思自在 : 不怕事多,只怕多事。
返回列表 上一主題