返回列表 上一主題 發帖

[發問] range 方法 worksheet 物件失敗

[發問] range 方法 worksheet 物件失敗

Private Sub Worksheet_Calculate()
If Sheets("即時行情").Range("az5") = 1 And Sheets("即時行情").Range("a2000").End(xlUp).Offset(1).Row = activewindow.VisibleRange.Row + activewindow.VisibleRange.Rows.count - 3 Then
Sheets("即時行情").Range("az5") = 2
Dim Aer
Set Aer = .Range("a2000").End(xlUp).Offset(-5)
ActiveWindow.ScrollRow = Aer.Row
Set Aer = Nothing
Sheets("即時行情").Range("az5") = 1
End If

如果我切到別的sheet 有時會出現 range 方法 worksheet 物件失敗,(錯在第一行)
我查的解決方法是必須先使用 Worksheet 物件的 Activate 方法啟用工作表,才能在沒有明確物件限定詞的情況下使用 Range 屬性。
上面程式不知如何改 ??

第一行加這看看~~
If ActiveSheet.Name <> "即時行情" Then Exit Sub

TOP

本帖最後由 t8899 於 2020-8-6 06:21 編輯
第一行加這看看~~
If ActiveSheet.Name  "即時行情" Then Exit Sub
准提部林 發表於 2020-8-1 12:22

請教如果上面紅色這行如果有錯誤,則...........語法是??
判斷錯誤此行是要放在前面或後面?
是用IsError 或 CVErr ??

TOP

]回復 3# t8899
你程式碼有誤  Set Aer = .Range("a2000").End(xlUp).Offset(-5)
加入  With Sheets("即時行情") 試試看
[codePrivate Sub Worksheet_Calculate()
If Sheets("即時行情").Range("az5") = 1 And Sheets("即時行情").Range("a2000").End(xlUp).Offset(1).Row = ActiveWindow.VisibleRange.Row + ActiveWindow.VisibleRange.Rows.Count - 3 Then
Sheets("即時行情").Range("az5") = 2
Dim Aer
With Sheets("即時行情")
Set Aer = .Range("a2000").End(xlUp).Offset(-5)
End With
ActiveWindow.ScrollRow = Aer.Row
Set Aer = Nothing
Sheets("即時行情").Range("az5") = 1
End If
End Sub
[/code]
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 t8899 於 2020-8-6 10:03 編輯

回復 4# GBKEE

謝謝提醒,我原本就有加,偶而還是會出現錯誤,抓不出原因,錯誤發生時按“繼續”不受影響
想用iserror 直接跳過,不知如何做?


Snap22.jpg
2020-8-6 10:01


這是放在 Private Sub Worksheet_Calculate()

TOP

回復 5# t8899

程式碼不完整, 猜不出~~
程式第一行用 ON ERROR RESUME NEXT 吧!

TOP

回復  t8899

程式碼不完整, 猜不出~~
程式第一行用 ON ERROR RESUME NEXT 吧!
准提部林 發表於 2020-8-6 10:46



Private Sub Worksheet_Calculate() 底下要好幾個條件,我只想針對這個條件, 放在第一行?其他條件也會跳過嗎?

TOP

On Error GoTo 999
If Sheets("即時行情2").Range("az5") = 1 And _
   Sheets("即時行情").Range("a2000").End(xlUp).Offset(1).Row = _
   ActiveWindow.VisibleRange.Row + ActiveWindow.VisibleRange.Rows.Count - 3 Then
   Sheets("即時行情").Range("az5") = 2
   Dim Aer
   Set Aer = Range("a2000").End(xlUp).Offset(-5)
   ActiveWindow.ScrollRow = Aer.Row
   Set Aer = Nothing
   Sheets("即時行情").Range("az5") = 1
End If
999: On Error GoTo 0

TOP

回復 7# t8899
Worksheet_Calculate()工作表模組的預設事件.
當這工作表模組上的工作表,任一儲存格公式值改變時會觸發這Worksheet_Calculate()

Private Sub Worksheet_Calculate() 底下要好幾個條件,我只想針對這個條件, 放在第一行?其他條件也會跳過嗎

這Worksheet_Calculate() 是這Sheets("即時行情")工作表模組上的嗎?

請附上完整檔案,好瞭解你的問題.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題