- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2025-7-5
|
2#
發表於 2013-10-17 23:41
| 只看該作者
本帖最後由 luhpro 於 2013-10-17 23:45 編輯
大家好,我寫下一個事件如下:
是想將在輸入第四或第六個儲存格時會自動變除以10000後再轉成整數
但實際運作 ...
maomao 發表於 2013-10-17 21:16 
1. 因為 ActiveCell 與 Target 不是同一個儲存格,
當你按下 Enter 時 ActiveCell 已經移位了.
2. 既然你前面已經用了 With Target,
那麼在 End With 之前只要有參照到 Target 的指令都可以用 . 來取代使用.
3. 因為變更儲存格內容時(包含由 Excel VBA 程式變更的)都會呼叫 Worksheet_Change,
故而應在變更前將觸發開關 (Application.EnableEvents) 關掉,
再於變更後打開,
以避免出現 不可預期的錯誤結果 甚至是 "無限次的" 觸發(呼叫程式)的錯誤出現.
修改後的程式如下 :- Private Sub Worksheet_Change(ByVal Target As Range)
- With Target
- If .Column = 4 Or .Column = 6 Then
- Application.EnableEvents = False
- .Value = Round(.Value / 10000)
- Application.EnableEvents = True
- End If
- End With
- End Sub
複製代碼 |
|