返回列表 上一主題 發帖

請教一下!下列的語法可用迴圈來簡化嗎?

請教一下!下列的語法可用迴圈來簡化嗎?

各位先進大家好!小弟為了設計成績系統依然繼續努力中,但在此又有一個問題想請教,請問一下,下列的語法可以用迴圈簡化嗎?應該怎麼寫。
Sub Worksheet_Change(ByVal Target As Range) '國語成績'
    Dim ch1 As Integer, ch2 As Integer, ch3 As Integer, ch4 As Integer, chsc1 As Integer, chsc2 As Integer, chsc3 As Integer, chsc4 As Integer
    ch1 = Worksheets("基本設定").Range("e2").Value
    ch2 = Worksheets("基本設定").Range("f2").Value
    ch3 = Worksheets("基本設定").Range("g2").Value
    ch4 = Worksheets("基本設定").Range("h2").Value
    chsc1 = Worksheets("期中評量").Range("c3").Value
    chsc2 = Worksheets("期中評量").Range("h3").Value
    chsc3 = Worksheets("期中評量").Range("i3").Value
    chsc4 = Worksheets("期中評量").Range("j3").Value
    Worksheets("期中成績").Range("c5").Value = (chsc1 * ch1 + chsc2 * ch2 + chsc3 * ch3 + chsc4 * ch4) / 100
End Sub

http://www.FunP.Net/795776

補充一下,就是這一大串
Worksheets("期中成績").Range("c5").Value = (Range("c3") * ch1 + Range("h3") * ch2 + Range("i3") * ch3 + Range("j3") * ch4) / 100
    Worksheets("期中成績").Range("c6").Value = (Range("c4") * ch1 + Range("h4") * ch2 + Range("i4") * ch3 + Range("j4") * ch4) / 100
    Worksheets("期中成績").Range("c7").Value = (Range("c5") * ch1 + Range("h5") * ch2 + Range("i5") * ch3 + Range("j5") * ch4) / 100
    Worksheets("期中成績").Range("c8").Value = (Range("c6") * ch1 + Range("h6") * ch2 + Range("i6") * ch3 + Range("j6") * ch4) / 100
    Worksheets("期中成績").Range("c9").Value = (Range("c7") * ch1 + Range("h7") * ch2 + Range("i7") * ch3 + Range("j7") * ch4) / 100
    Worksheets("期中成績").Range("c10").Value = (Range("c8") * ch1 + Range("h8") * ch2 + Range("i8") * ch3 + Range("j8") * ch4) / 100
    Worksheets("期中成績").Range("c11").Value = (Range("c9") * ch1 + Range("h9") * ch2 + Range("i9") * ch3 + Range("j9") * ch4) / 100
    Worksheets("期中成績").Range("c12").Value = (Range("c10") * ch1 + Range("h10") * ch2 + Range("i10") * ch3 + Range("j10") * ch4) / 100
    Worksheets("期中成績").Range("c13").Value = (Range("c11") * ch1 + Range("h11") * ch2 + Range("i11") * ch3 + Range("j11") * ch4) / 100
    Worksheets("期中成績").Range("c14").Value = (Range("c12") * ch1 + Range("h12") * ch2 + Range("i12") * ch3 + Range("j12") * ch4) / 100
    Worksheets("期中成績").Range("c15").Value = (Range("c13") * ch1 + Range("h13") * ch2 + Range("i13") * ch3 + Range("j13") * ch4) / 100
    Worksheets("期中成績").Range("c16").Value = (Range("c14") * ch1 + Range("h14") * ch2 + Range("i14") * ch3 + Range("j14") * ch4) / 100
    Worksheets("期中成績").Range("c17").Value = (Range("c15") * ch1 + Range("h15") * ch2 + Range("i15") * ch3 + Range("j15") * ch4) / 100
    Worksheets("期中成績").Range("c18").Value = (Range("c16") * ch1 + Range("h16") * ch2 + Range("i16") * ch3 + Range("j16") * ch4) / 100
    Worksheets("期中成績").Range("c19").Value = (Range("c17") * ch1 + Range("h17") * ch2 + Range("i17") * ch3 + Range("j17") * ch4) / 100
    Worksheets("期中成績").Range("c20").Value = (Range("c18") * ch1 + Range("h18") * ch2 + Range("i18") * ch3 + Range("j18") * ch4) / 100
    Worksheets("期中成績").Range("c21").Value = (Range("c19") * ch1 + Range("h19") * ch2 + Range("i19") * ch3 + Range("j19") * ch4) / 100
    Worksheets("期中成績").Range("c22").Value = (Range("c20") * ch1 + Range("h20") * ch2 + Range("i20") * ch3 + Range("j20") * ch4) / 100
    Worksheets("期中成績").Range("c23").Value = (Range("c21") * ch1 + Range("h21") * ch2 + Range("i21") * ch3 + Range("j21") * ch4) / 100
    Worksheets("期中成績").Range("c24").Value = (Range("c22") * ch1 + Range("h22") * ch2 + Range("i22") * ch3 + Range("j22") * ch4) / 100
    Worksheets("期中成績").Range("c25").Value = (Range("c23") * ch1 + Range("h23") * ch2 + Range("i23") * ch3 + Range("j23") * ch4) / 100
    Worksheets("期中成績").Range("c26").Value = (Range("c24") * ch1 + Range("h24") * ch2 + Range("i24") * ch3 + Range("j24") * ch4) / 100
    Worksheets("期中成績").Range("c27").Value = (Range("c25") * ch1 + Range("h25") * ch2 + Range("i25") * ch3 + Range("j25") * ch4) / 100
    Worksheets("期中成績").Range("c28").Value = (Range("c26") * ch1 + Range("h26") * ch2 + Range("i26") * ch3 + Range("j26") * ch4) / 100
    Worksheets("期中成績").Range("c29").Value = (Range("c27") * ch1 + Range("h27") * ch2 + Range("i27") * ch3 + Range("j27") * ch4) / 100
    Worksheets("期中成績").Range("c30").Value = (Range("c28") * ch1 + Range("h28") * ch2 + Range("i28") * ch3 + Range("j28") * ch4) / 100
    Worksheets("期中成績").Range("c31").Value = (Range("c29") * ch1 + Range("h29") * ch2 + Range("i29") * ch3 + Range("j29") * ch4) / 100
    Worksheets("期中成績").Range("c32").Value = (Range("c30") * ch1 + Range("h30") * ch2 + Range("i30") * ch3 + Range("j30") * ch4) / 100
    Worksheets("期中成績").Range("c33").Value = (Range("c31") * ch1 + Range("h31") * ch2 + Range("i31") * ch3 + Range("j31") * ch4) / 100
    Worksheets("期中成績").Range("c34").Value = (Range("c32") * ch1 + Range("h32") * ch2 + Range("i32") * ch3 + Range("j32") * ch4) / 100
    Worksheets("期中成績").Range("c35").Value = (Range("c33") * ch1 + Range("h33") * ch2 + Range("i33") * ch3 + Range("j33") * ch4) / 100
    Worksheets("期中成績").Range("c36").Value = (Range("c34") * ch1 + Range("h34") * ch2 + Range("i34") * ch3 + Range("j34") * ch4) / 100
    Worksheets("期中成績").Range("c37").Value = (Range("c35") * ch1 + Range("h35") * ch2 + Range("i35") * ch3 + Range("j35") * ch4) / 100
    Worksheets("期中成績").Range("c38").Value = (Range("c36") * ch1 + Range("h36") * ch2 + Range("i36") * ch3 + Range("j36") * ch4) / 100
    Worksheets("期中成績").Range("c39").Value = (Range("c37") * ch1 + Range("h37") * ch2 + Range("i37") * ch3 + Range("j37") * ch4) / 100
    Worksheets("期中成績").Range("c40").Value = (Range("c38") * ch1 + Range("h38") * ch2 + Range("i38") * ch3 + Range("j38") * ch4) / 100
    Worksheets("期中成績").Range("c41").Value = (Range("c39") * ch1 + Range("h39") * ch2 + Range("i39") * ch3 + Range("j39") * ch4) / 100
    Worksheets("期中成績").Range("c42").Value = (Range("c40") * ch1 + Range("h40") * ch2 + Range("i40") * ch3 + Range("j40") * ch4) / 100
    Worksheets("期中成績").Range("c43").Value = (Range("c41") * ch1 + Range("h41") * ch2 + Range("i41") * ch3 + Range("j41") * ch4) / 100
    Worksheets("期中成績").Range("c44").Value = (Range("c42") * ch1 + Range("h42") * ch2 + Range("i42") * ch3 + Range("j42") * ch4) / 100

TOP

回復 3# GBKEE
感謝版大,我知道哪裡出問題了,我昨天是這樣寫
For I = 3 To 40
Worksheets("期中成績").Range(c&(I+2)).Value = (Range("ci"  ) * ch1 + Range("hi"  ) * ch2 + Range("ii" ) * ch3 + Range("ji" ) * ch4) / 100
原來括號內要這樣寫
Worksheets("期中成績").Range("c" & 5 + I - 3).Value = (Range("c" & I) * ch1 + Range("h" & I) * ch2 + Range("i" & I) * ch3 + Range("j" & I) * ch4) / 100
另外,還想再請教您。有關統計成績的語法,就是說考100分的幾人,考90~99分的幾人....
    '成績統計'
    Dim myrange As Range
    For Each myrange In Worksheets("期中評量").Range("c3", Range("c3").End(xlDown))
    If myrange.Value = 100 Then Worksheets("sheet1").Range("a1") = myrange.Count
    這樣的語法是哪裡該修改?謝謝。

TOP

感謝兩位!我先去試試,再上來報告成果。

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題