响应单元格值更改的自动执行

我知道代码可能不是很好,但我还在学习VBA。

我创build了一个工作表来组织我的大学课程列表,但是我正在努力使代码在前两列中更改值时自动执行。

第一列中的“x”select完成的课程,从所需的总小时数中减去该课程的学分。 第二栏中的“S”和一些数字表示一个学期,并总结每学期的学分,例如,如果我在“工程中的学习和职业”旁边input“S1”,那么将会采取每学期1学分,并加上整个学期的总学时。

这两个代码是完全独立的。

工作表的屏幕截图: http : //i.imgur.com/G850X.png

码:

Private Sub Calculations() Dim creditsLeft As Integer creditsLeft = 130 For i = 3 To 43 If Cells(i, 1).Value = "x" Then creditsLeft = (creditsLeft - Cells(i, 8)) Next i Range("J3").Value = creditsLeft Dim S1creds, S2creds, S3creds, S4creds, S5creds, S6creds As Integer For i = 3 To 43 If Cells(i, 2).Value = "S1" Then S1creds = (S1creds + Cells(i, 8)) If Cells(i, 2).Value = "S2" Then S2creds = (S2creds + Cells(i, 8)) If Cells(i, 2).Value = "S3" Then S3creds = (S3creds + Cells(i, 8)) If Cells(i, 2).Value = "S4" Then S4creds = (S4creds + Cells(i, 8)) If Cells(i, 2).Value = "S5" Then S5creds = (S5creds + Cells(i, 8)) If Cells(i, 2).Value = "S6" Then S6creds = (S6creds + Cells(i, 8)) Next i Range("J9").Value = "Sem 1 Hrs: " Range("J10").Value = "Sem 2 Hrs: " Range("J11").Value = "Sem 3 Hrs: " Range("J12").Value = "Sem 4 Hrs: " Range("J13").Value = "Sem 5 Hrs: " Range("J14").Value = "Sem 6 Hrs: " Range("K9").Value = S1creds Range("K10").Value = S2creds Range("K11").Value = S3creds Range("K12").Value = S4creds Range("K13").Value = S5creds Range("K14").Value = S6creds End Sub 

你甚至不需要VBA。

I3: =130-SUMIF(A3:A43,"x",H3:H43)
K9: =SUMIF(B3:B43,"S1",H3:H43)
K10: =SUMIF(B3:B43,"S2",H3:H43)
K11: =SUMIF(B3:B43,"S3",H3:H43)
K12: =SUMIF(B3:B43,"S4",H3:H43)
K13: =SUMIF(B3:B43,"S5",H3:H43)
K14: =SUMIF(B3:B43,"S6",H3:H43)