Re: [問題] VBA 自動累加

看板Office作者時間11年前 (2013/06/19 15:25), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
因為你把它改成Change應該是變成 Private Sub Worksheet_Change(ByVal Target As Range) Target表示你工作表中產生Change的儲存格(或是範圍) 在你沒有限制Target的範圍之下, 只要你工作表內的任一儲存格有變動就會去執行For迴圈, 因此會導致無限迴圈 Target.Cells的意思再推文解釋過就不在解釋了 整段程式碼可以修改為 Private Sub Worksheet_Change(ByVal Target As Range) With Target '限制Target在C欄的第一列至第10列才產生作用也就是C1:C10 If .Column = 3 And .Row >= 1 And .Row <= 10 Then .Offset(0, 1).Value = .Offset(0, 1).Value + .Value End If End With End Sub 這樣試試看吧 ※ 引述《owen06 (阿軒)》之銘言: : 軟體:EXCEL : 版本:2003 : 小弟是VBA初學者,最近在做一張表時,想要讓他在C1輸入數字D1就會自動累加, : 我自己輸入了內容如下: : For Each A In Range("C1:C10") : A.Offset(0, 1) = A + A.Offset(0, 1) : Next : 這樣的內容,在單獨執行上OK,在C欄輸入完數字再按執行,D欄就能累加, : 但當我把Worksheet的執行方式改成『change』時,再使用上面的語法, : 只要C1一輸入數字,就會變成了D1的數字會一直增加的無限迴圈。 : 後來上網看到有一個語法: : Set A = Target.Cells(1, 1) : If A.Column > 1 Then Exit Sub : A.Offset(0, 1) = A.Offset(0, 1) + A : 這樣一來的確是能在A欄輸入數字,B欄就會自動累加進去,但我想要使用的欄位在『C』, : 所以我試著把 Target.Cells改成(1,3),可是改完之後,在C欄輸入數字, : D欄卻一點反應也沒有… : 希望版上的高手們能給小弟一點建議,看要如何修改才能正確的執行,謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.202.210.154

06/19 16:05, , 1F
可以了,大恩大德感激不盡~~~
06/19 16:05, 1F
文章代碼(AID): #1HmLq3Tr (Office)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1HmLq3Tr (Office)