![]() |
||
Regular Member
![]() ![]() 加入日期: Jan 2002
文章: 64
|
![]() 請教目前有A、B、C&D四欄
在C欄或D欄填入數值時,A欄會抓取C或D末5位數值,優先抓C的值。 Private Sub Worksheet_Change(ByVal Target As Range) Dim number As String If Range("c" & Target.Row).Value <> "" Then number = Right(Range("c" & Target.Row), 5) Range("a" & Target.Row).Value = number Else: number = Right(Range("D" & Target.Row), 5) Range("a" & Target.Row).Value = number End If End Sub 可當寫入C或D時,整個EXCEL就停住。進入偵錯 Private Sub Worksheet_Change(ByVal Target As Range)<=亮黃色 這該如何修改? |
|||||||
![]() |
![]() |
Amateur Member
![]() 加入日期: Sep 2001
文章: 36
|
用個變數i 記一下是不是Worksheet_Change 無窮迴圈
看起來是在裡面update value 又trigger 一次Worksheet_Change... |
||
![]() |
![]() |
Regular Member
![]() ![]() 加入日期: Jan 2002
文章: 64
|
真的是在無迴圈,可我不知道該如何解決
|
![]() |
![]() |
Regular Member
![]() ![]() 加入日期: Apr 2005
文章: 69
|
在對A賦值的同時會再次觸發Worksheet_Change事件
把主要程序寫到 sub op() (然後call sub 方式執行主要程序 目地是保正Target.Row是固定的 你要的) 開頭補上布林變數 now_exe=1 主要程序結束後 用Select 歸位 Target cell 布林變數 now_exe=0 在Worksheet_Change 裡做個可否執行 call sub 的判別 If(now_exe =0) then call op(target) 在開起excel 事件中設定 布林變數Now_go =0 |
![]() |
![]() |
Regular Member
![]() ![]() 加入日期: Jan 2002
文章: 64
|
這個布林變數Now_go =0 用意是?
|
![]() |
![]() |
New Member
加入日期: May 2005
文章: 1
|
事件觸發後 Application.EnableEvents = False
處理完後再 Application.EnableEvents = True |
![]() |
![]() |
Regular Member
![]() ![]() 加入日期: Jan 2002
文章: 64
|
耶....把DW1943建議放進去就可以了,可不知道tp34x大的方法哪個好?
Private Sub Worksheet_Change(ByVal target As Range) Dim number As String Application.EnableEvents = False If Range("c" & target.Row).Value <> "" Then number = Right(Range("c" & target.Row), 5) Cells(target.Row, "a").Value = number ElseIf Range("D" & target.Row).Value <> "" Then number = Right(Range("D" & target.Row), 5) Cells(target.Row, "a").Value = number End If Application.EnableEvents = True End Sub 此文章於 2015-06-03 12:39 AM 被 fashionkid 編輯. |
![]() |
![]() |