1

コードはおそらくあまり良くないことは知っていますが、私はまだVBAを学んでいます。

大学のコースリストを整理するワークシートを作成しましたが、最初の2列の値を変更したときにコードが自動的に実行されるように作成しようとしています。

最初の列の「x」は、必要な合計時間からそのクラスの単位時間を差し引く完了したコースとしてそれを選択します。2番目の列の「S」といくつかの数字は学期を示し、学期ごとにかかる単位時間を合計します。たとえば、「工学の研究とキャリア」の横に「S1」と入力すると、次のようになります。そのクラスの1単位時間と、それを学期全体の合計時間に追加します。

2つのコードは互いに完全に独立しています。

ワークシートのスクリーンショット: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
4

1 に答える 1

3

そのために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)

于 2012-11-29T14:41:52.990 に答える