PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

回應
 
主題工具
fashionkid
Regular Member
 

加入日期: Jan 2002
文章: 64
Question 請教Excel VBA是卡在哪?

請教目前有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)<=亮黃色
這該如何修改?
     
      
舊 2015-06-01, 11:32 PM #1
回應時引用此文章
fashionkid離線中  
globelin
Amateur Member
 

加入日期: Sep 2001
文章: 36
用個變數i 記一下是不是Worksheet_Change 無窮迴圈
看起來是在裡面update value 又trigger 一次Worksheet_Change...
 
舊 2015-06-01, 11:56 PM #2
回應時引用此文章
globelin離線中  
fashionkid
Regular Member
 

加入日期: Jan 2002
文章: 64
真的是在無迴圈,可我不知道該如何解決
舊 2015-06-02, 12:18 AM #3
回應時引用此文章
fashionkid離線中  
tp34x
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
舊 2015-06-02, 08:55 AM #4
回應時引用此文章
tp34x離線中  
fashionkid
Regular Member
 

加入日期: Jan 2002
文章: 64
這個布林變數Now_go =0 用意是?
舊 2015-06-02, 12:42 PM #5
回應時引用此文章
fashionkid離線中  
DW1943
New Member
 

加入日期: May 2005
文章: 1
事件觸發後 Application.EnableEvents = False
處理完後再 Application.EnableEvents = True
舊 2015-06-02, 08:07 PM #6
回應時引用此文章
DW1943離線中  
fashionkid
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 編輯.
舊 2015-06-03, 12:37 AM #7
回應時引用此文章
fashionkid離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是06:51 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。