Board logo

標題: [發問] 關於Worksheet_SelectionChange如何除錯? [打印本頁]

作者: av8d    時間: 2014-3-14 11:57     標題: 關於Worksheet_SelectionChange如何除錯?

  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim rngE As Range
  3.     end1 = [A65536].End(xlUp).Row
  4.     Set rngE = [E1].Resize(end1, 1)
  5.     If Not Intersect(Target, rngE) Is Nothing Then
  6.         If Target = "v" Then
  7.             Target = ""
  8.         Else
  9.             Target = "v"
  10.         End If
  11.     End If
  12. End Sub
複製代碼
滑鼠當點一下E1則E1會自動打勾
但是當滑鼠按住E1往下拉到E2則會出現錯誤
是否能除錯?
如果真的不行~是否可以讓他不要跳出錯誤?
再次感謝各位大大!
作者: huijuang    時間: 2014-3-14 13:24

好像是因為設定為非陣列,所以會出現錯誤
可以先加上On Error Resume Next 應該可以順利執行
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. On Error Resume Next
  3.     Dim rngE As Range
  4.     end1 = [A65536].End(xlUp).Row
  5.     Set rngE = [E1].Resize(end1, 1)
  6.     If Not Intersect(Target, rngE) Is Nothing Then
  7.         If Target = "v" Then
  8.             Target = ""
  9.         Else
  10.             Target = "v"
  11.         End If
  12.     End If
  13. End Sub
複製代碼

作者: owen06    時間: 2014-3-14 13:26

回復 1# av8d


    在if not 那排字的上一行輸入『on error resume next』,可以呼略錯誤,
    可是你出現v後,再往下拉,v又都不見了耶,可以請問你這設計的目的嗎?
作者: Hsieh    時間: 2014-3-14 15:51

回復 1# av8d
除非是不可預期的錯誤,盡量避免使用On Error Resume Next
應針對錯誤點修正
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim rngE As Range
  3.     end1 = [A65536].End(xlUp).Row
  4.     Set rngE = [E1].Resize(end1, 1)
  5.     If Not Intersect(Target, rngE) Is Nothing Then
  6.         If Target(1) = "v" Then
  7.             Target(1) = ""
  8.         Else
  9.             Target(1) = "v"
  10.         End If
  11.     End If
  12. End Sub
複製代碼

作者: av8d    時間: 2014-3-14 16:31

本帖最後由 av8d 於 2014-3-14 16:34 編輯

回復 4# Hsieh


    謝謝H大的修正~也謝謝其他大大的幫忙~
讓我同時學習了兩樣寫法

我想請問是否有辦法
當滑鼠按住E1往下拉到E2的時候
E1、E2同時被打勾呢?再次感謝!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)