2016-02-29 71 views
0

Excel VBA中增加細胞值我有一個電子表格,其中細胞是D4:D93數據驗證下拉列表僅YesNo作爲選項。而不產生循環引用

我試圖找出使得當在一個單元被選擇在該範圍內Yes,然後在範圍I4:I93變化在重合單元中的值是一致的單元格的總和在I4:I93V4:V93如何編碼VBA 。

我一直在尋找幾天,並嘗試了很多東西,我甚至不知道從哪裏開始嘗試。一些嘗試導致沒有發生。其他導致Excel由於循環引用而凍結或崩潰。不知道這是否相關,但D4:D93I4:I93是表格的一部分,但V4:V93不是。

回答

4

試試這個工作表事件宏:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim D As Range, rw As Long 
    Set D = Range("D4:D93") 

    If Intersect(Target, D) Is Nothing Then Exit Sub 
    If LCase(Target.Value) <> "yes" Then Exit Sub 
    rw = Target.Row 
    Application.EnableEvents = False 
     Range("I" & rw).Value = Range("I" & rw).Value + Range("V" & rw).Value 
    Application.EnableEvents = True 
End Sub 

因爲它是工作表的代碼,它是非常容易安裝和自動使用:

  1. 右鍵單擊靠近底部的標籤名稱Excel窗口
  2. 選擇查看代碼 - 這帶來了一個VBE窗口
  3. 粘貼的東西並關閉VBE窗口

如果您有任何疑問,請先在試用工作表上嘗試。

如果保存工作簿,宏將與其一起保存。 如果您正在使用一個版本的Excel更高然後2003,你必須保存 該文件作爲.XLSM而非的.xlsx

要刪除宏:

  1. 彈出窗口VBE如上
  2. 清晰的代碼進行
  3. 關閉VBE窗口

要了解更多關於一般的宏,請參閱:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解更多有關事件宏(工作表的代碼),請參閱:

http://www.mvps.org/dmcritchie/excel/event.htm

宏必須爲此工作啓用!

+0

這似乎工作得很好。謝謝,我從來不會想到這一點。 – toepel30