Board logo

標題: [發問] 工作表Worksheet_Change有巨集,使用右鍵貼上資料excel會當掉 [打印本頁]

作者: tw123456789    時間: 2011-10-12 17:08     標題: 工作表Worksheet_Change有巨集,使用右鍵貼上資料excel會當掉

請問:
工作表Worksheet_Change寫有巨集,其巨集內容主要是檢查值的改變
ex:當Target(被改變的欄位)=第6欄時,則會改變其他的欄位值
If Target.column= 6 Then
    On Error Resume Next
          On Error Resume Next
    If value_1 = "ABC" Or value_1 = "" Then
        Target.Offset(0, 1).Interior.ColorIndex = xlNone
        Target.Offset(0, 1).Locked = False
    Else
         Target.Offset(0, 1) = ""      
        With Target.Offset(0, 1).Interior
                  .ColorIndex = 34
                   .Pattern = xlSolid
        End With
    End If
    Target.Offset(0, 1).Locked = True
    On Error GoTo 0
End If

這類的控制並不只有第六欄,  還有很多欄被控制,但大多都是填值或是填顏色、設保護
會使用on error resume next 是希望不要因error而停下來。
回到工作表要做右鍵複製貼上時,卻會使整個excel當掉
但若改用ctrl+c、ctrl+v,則會安全過關
請問該怎解決呢?
作者: luhpro    時間: 2011-10-12 23:00

回復 1# tw123456789
1. on error goto next 那指令只要有放一個就可以了,不用連續放兩個.

2. 因沒實例, 我猜測改成底下這樣有可能可以解決你的問題
On Error Resume Next
        Target.Offset(0, 1).Locked = False  ' 搬到這裡 - 要變更儲存格格式或內容前先解鎖
    If value_1 = "ABC" Or value_1 = "" Then
        Target.Offset(0, 1).Interior.ColorIndex = xlNone
    Else
         Target.Offset(0, 1) = ""      

3. 如果上述方式無效.

因為沒有提供實際的程式可以追蹤,
所以我僅能猜測問題發生的可能原因 :
程式會當掉的原因依我的經驗應該是執行過程中出現 "無限迴圈" 的情形造成的.

你可以故意再讓它發生此情形,
然後按下 Ctrl+Break 程序會停在某一行指令上,
接著按下 F8 單步執行以觀察程序到底迴圈是發生在哪些指令上,
這樣會較容易找到問題點.




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