[爆卦]vba迴圈儲存格是什麼?優點缺點精華區懶人包

為什麼這篇vba迴圈儲存格鄉民發文收入到精華區:因為在vba迴圈儲存格這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者bulldog ()看板Office標題Re: [問題] VBA 自動累加時間Wed Jun 1...


因為你把它改成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
owen06:可以了,大恩大德感激不盡~~~ 06/19 16:05

你可能也想看看

搜尋相關網站