Excel “过程太大”错误

Excel “过程太大”错误,excel,vba,Excel,Vba,这样做,一切都会好起来的 而不是像下面这样有这么多变量 Sub Create_Mail_From_List_Exams() Dim OutApp As Object Dim OutMail As Object Dim cell As Range Dim bodymessage As String Dim bodymessage1 As String Dim bodymessage2 As String Dim bodymessage3 As String Dim bodymessage4

这样做,一切都会好起来的

而不是像下面这样有这么多变量

Sub Create_Mail_From_List_Exams()

Dim OutApp  As Object
Dim OutMail As Object
Dim cell As Range
Dim bodymessage  As String
Dim bodymessage1 As String
Dim bodymessage2 As String
Dim bodymessage3 As String
Dim bodymessage4  As String
Dim bodymessage5 As String
Dim Bodymessage6 As String
Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo cleanup
Dim i As Integer
Dim j As Integer
For i = 3 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row

    bodymessage = ""
    bodymessage1 = ""
    bodymessage2 = ""
    bodymessage3 = ""
    bodymessage4 = ""
    bodymessage5 = ""
    ex6 = ""
    ex7 = ""
    ex8 = ""

    fr1 = ""
    fr2 = ""
    fr3 = ""
    fr4 = ""
    fr5 = ""
    fr6 = ""
    fr7 = ""
    fr8 = ""
    fr9 = ""

  'ActiveSheet.Cells(1, 12) = ActiveSheet.Cells(1, 12) & "(" & cell.Row & "," & cell.Column & "), "

    If Sheets("Exams-email results").Cells(i, 3).Text Like "?*@?*.?*" And _
    LCase(Cells(i, "M").Value) = "dnm" Then

    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    With OutMail

    .To = ActiveSheet.Cells(i, 3).Text



    .Subject = Sheets("Exams-email results").Range("T2") & " / " & Sheets("Exams-email results").Range("T5")


    '& "Groupe  " & ActiveSheet.Cells(i, 10).Text & "  / Niveau " & ActiveSheet.Cells(i, 11).Text'

    'A'

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "Educ" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B7").Text
    End If


    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B26").Text

    End If

      If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B27").Text

    End If

           If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B28").Text

    End If
        If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B29").Text

    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B30").Text

    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A6" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B31").Text

    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A7" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B32").Text

    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A8" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B33").Text

    End If

         'k'

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "K1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B20").Text

    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "K2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B21").Text

    End If
            If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D2").Text = "K3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B22").Text

    End If


            If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "K4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B23").Text

    End If


            If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "K5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B24").Text

    End If



           'PS'




     If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B35").Text
    End If




     If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B36").Text
    End If



         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B37").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B38").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B39").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS6" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B40").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS7" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B41").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS8" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B42").Text
    End If





    'EXAM2'



        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "Educ" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B7").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A1" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B26").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A2" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B27").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A3" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B28").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A4" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B29").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A5" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B30").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A6" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B31").Text
    End If
        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A7" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B32").Text
    End If
     If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A8" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B33").Text
    End If






    'k'


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K1" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B20").Text
    End If





     If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K2" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B21").Text
    End If



    If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K3" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B22").Text
    End If


    If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K4" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B23").Text
    End If

    If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K5" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B24").Text
    End If

    'ps1'


    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B35").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B36").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B37").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B38").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B39").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS6" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B40").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS7" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B41").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS8" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B42").Text
    End If





    'Exam3'



        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "Educ" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B7").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "A1" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B26").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A2" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B27").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A3" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B28").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A4" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B29").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A5" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B30").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A6" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B31").Text
    End If

        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A7" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B32").Text
    End If

     If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A8" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B33").Text
    End If





    'K'


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K1" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B20").Text
    End If

    If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K2" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B21").Text
    End If
    If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K3" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B22").Text
    End If

    If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K4" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B23").Text
    End If

    If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K5" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B24").Text
    End If

    'PS'


    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B35").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B36").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B37").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B38").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B39").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS6" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B40").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS7" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B41").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS8" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B42").Text
    End If




    'EXam'



        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "Educ" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B7").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A1" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B26").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A2" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B27").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A3" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B28").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A4" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B29").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A5" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B30").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A6" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B31").Text
    End If
        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A7" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B32").Text
    End If

     If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A8" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B33").Text
End If
使用数组。比如说

Dim bodymessage  As String
Dim bodymessage1 As String
Dim bodymessage2 As String
Dim bodymessage3 As String
Dim bodymessage4  As String
Dim bodymessage5 As String
Dim Bodymessage6 As String
删除不必要的空行和不必要的注释

例如,这6行

Dim bodymessage(1 to 7) as String
Sub Sample()
    Dim MyAr(1 To 5)

    For i = 1 To 5
        MyAr(i) = 1
    Next i

    For i = 1 To 5
        Debug.Print MyAr(i)
    Next i

    Erase MyAr

    For i = 1 To 5
        Debug.Print MyAr(i) '<~~ Nothing there
    Next i

    Debug.Print UBound(MyAr)
End Sub
可以写两行

fr1 = ""
fr2 = ""
fr3 = ""
fr4 = ""
fr5 = ""
fr6 = ""
fr7 = ""
fr8 = ""
fr9 = ""
这只是一个例子。在上述情况下,我将完全按照我在第1点中提到的做。使用数组

还有一点。不需要单独清除数组中的每个元素。您可以使用擦除MyAr。这里有一个例子

fr1 = "": fr2 = "": fr3 = "": fr4 = "": fr5 = ""
fr6 = "": fr7 = "": fr8 = "": fr9 = ""

如果您应用了我上面提到的所有内容,那么您的错误就会消失:始终尝试编写清晰准确的代码:

这样做,一切都会好起来

而不是像下面这样有这么多变量

Sub Create_Mail_From_List_Exams()

Dim OutApp  As Object
Dim OutMail As Object
Dim cell As Range
Dim bodymessage  As String
Dim bodymessage1 As String
Dim bodymessage2 As String
Dim bodymessage3 As String
Dim bodymessage4  As String
Dim bodymessage5 As String
Dim Bodymessage6 As String
Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo cleanup
Dim i As Integer
Dim j As Integer
For i = 3 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row

    bodymessage = ""
    bodymessage1 = ""
    bodymessage2 = ""
    bodymessage3 = ""
    bodymessage4 = ""
    bodymessage5 = ""
    ex6 = ""
    ex7 = ""
    ex8 = ""

    fr1 = ""
    fr2 = ""
    fr3 = ""
    fr4 = ""
    fr5 = ""
    fr6 = ""
    fr7 = ""
    fr8 = ""
    fr9 = ""

  'ActiveSheet.Cells(1, 12) = ActiveSheet.Cells(1, 12) & "(" & cell.Row & "," & cell.Column & "), "

    If Sheets("Exams-email results").Cells(i, 3).Text Like "?*@?*.?*" And _
    LCase(Cells(i, "M").Value) = "dnm" Then

    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    With OutMail

    .To = ActiveSheet.Cells(i, 3).Text



    .Subject = Sheets("Exams-email results").Range("T2") & " / " & Sheets("Exams-email results").Range("T5")


    '& "Groupe  " & ActiveSheet.Cells(i, 10).Text & "  / Niveau " & ActiveSheet.Cells(i, 11).Text'

    'A'

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "Educ" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B7").Text
    End If


    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B26").Text

    End If

      If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B27").Text

    End If

           If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B28").Text

    End If
        If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B29").Text

    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B30").Text

    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A6" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B31").Text

    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A7" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B32").Text

    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "A8" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B33").Text

    End If

         'k'

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "K1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B20").Text

    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "K2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B21").Text

    End If
            If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D2").Text = "K3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B22").Text

    End If


            If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "K4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B23").Text

    End If


            If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "K5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B24").Text

    End If



           'PS'




     If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B35").Text
    End If




     If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B36").Text
    End If



         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B37").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B38").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B39").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS6" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B40").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS7" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B41").Text
    End If

         If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("D3").Text = "PS8" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B42").Text
    End If





    'EXAM2'



        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "Educ" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B7").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A1" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B26").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A2" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B27").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A3" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B28").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A4" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B29").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A5" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B30").Text
    End If


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A6" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B31").Text
    End If
        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A7" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B32").Text
    End If
     If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "A8" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B33").Text
    End If






    'k'


        If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K1" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B20").Text
    End If





     If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K2" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B21").Text
    End If



    If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K3" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B22").Text
    End If


    If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K4" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B23").Text
    End If

    If LCase(Cells(i, "E").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "K5" Then

        bodymessage1 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B24").Text
    End If

    'ps1'


    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B35").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B36").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B37").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B38").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B39").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS6" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B40").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS7" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B41").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS8" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B42").Text
    End If





    'Exam3'



        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "Educ" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B7").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "A1" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B26").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A2" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B27").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A3" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B28").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A4" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B29").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A5" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B30").Text
    End If


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A6" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B31").Text
    End If

        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A7" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B32").Text
    End If

     If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F2").Text = "A8" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B33").Text
    End If





    'K'


        If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K1" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B20").Text
    End If

    If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K2" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B21").Text
    End If
    If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K3" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B22").Text
    End If

    If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K4" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B23").Text
    End If

    If LCase(Cells(i, "F").Text) = "dnm" And Sheets("Exams-email results").Range("F3").Text = "K5" Then

        bodymessage2 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B24").Text
    End If

    'PS'


    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS1" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B35").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS2" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B36").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS3" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B37").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS4" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B38").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS5" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B39").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS6" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B40").Text
    End If
    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS7" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B41").Text
    End If

    If LCase(Cells(i, "D").Text) = "dnm" And Sheets("Exams-email results").Range("E3").Text = "PS8" Then

        bodymessage = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B42").Text
    End If




    'EXam'



        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "Educ" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B7").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A1" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B26").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A2" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B27").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A3" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B28").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A4" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B29").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A5" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B30").Text
    End If


        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A6" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B31").Text
    End If
        If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A7" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B32").Text
    End If

     If LCase(Cells(i, "G").Text) = "dnm" And Sheets("Exams-email results").Range("G3").Text = "A8" Then

        bodymessage3 = vbNewLine & "    **    " & Sheets("SOMC-Legend").Range("B33").Text
End If
使用数组。比如说

Dim bodymessage  As String
Dim bodymessage1 As String
Dim bodymessage2 As String
Dim bodymessage3 As String
Dim bodymessage4  As String
Dim bodymessage5 As String
Dim Bodymessage6 As String
删除不必要的空行和不必要的注释

例如,这6行

Dim bodymessage(1 to 7) as String
Sub Sample()
    Dim MyAr(1 To 5)

    For i = 1 To 5
        MyAr(i) = 1
    Next i

    For i = 1 To 5
        Debug.Print MyAr(i)
    Next i

    Erase MyAr

    For i = 1 To 5
        Debug.Print MyAr(i) '<~~ Nothing there
    Next i

    Debug.Print UBound(MyAr)
End Sub
可以写两行

fr1 = ""
fr2 = ""
fr3 = ""
fr4 = ""
fr5 = ""
fr6 = ""
fr7 = ""
fr8 = ""
fr9 = ""
这只是一个例子。在上述情况下,我将完全按照我在第1点中提到的做。使用数组

还有一点。不需要单独清除数组中的每个元素。您可以使用擦除MyAr。这里有一个例子

fr1 = "": fr2 = "": fr3 = "": fr4 = "": fr5 = ""
fr6 = "": fr7 = "": fr8 = "": fr9 = ""


如果您应用了我上面提到的所有内容,那么您的错误就会消失:始终尝试编写清晰准确的代码:

您的问题是什么?你有没有尝试过通过重构来缩短和/或减少重复?我是jonrsharpe的。循环遍历行或列。把你的支票和健身信息放在循环中。这就是你想要的吗?一种使代码更小的方法。现在,您的标题是“大过程错误”。您得到了什么错误?请对以上代码给出一些注释。“你想要什么?”马修德。错误是程序太大-编译错误你的问题是什么?你有没有尝试过通过重构来缩短和/或减少重复?我是jonrsharpe的。循环遍历行或列。把你的支票和健身信息放在循环中。这就是你想要的吗?一种使代码更小的方法。现在,您的标题是“大过程错误”。您得到了什么错误?请对以上代码给出一些注释。“你想要什么?”马修德。错误是过程太大-编译Error@BruceWayne它的格式与bodymessage数组相同-fri=fr组的第i个元素。您可以使用变量,但在这种情况下太复杂,不需要。您可以在fr的情况下使用数组。因此,Dim fri1到9之类的东西,并在其中存储值,如fri1=Blah Blah Blah,要清除数组,您不必执行fr1=:fr2=等操作。。。您只需使用Erase fr@BruceWayne++good good good在一行中清除它。。。我会更进一步,把考试的电子邮件结果和它们对应的SOMC图例范围名称放在一个2-D数组或其他东西中。这将进一步将所有那些精选案例语句压缩为一行或两行:谢谢@Grade'Eh'Bacon和Siddharth!我知道这太复杂了,但你的回答引发了这个问题,很高兴知道@PradeepKumar:你到底在做什么?在这些神秘的时刻保持清醒:D是的,这也是一个很好的建议。@BruceWayne它的格式将与bodymessage数组相同-fri=fr组的第i个元素。你可以使用变量,但在这种情况下太复杂了,不需要。您可以在fr的情况下使用数组。因此,Dim fri1到9之类的东西,并在其中存储值,如fri1=Blah Blah Blah,要清除数组,您不必执行fr1=:fr2=等操作。。。您只需使用Erase fr@BruceWayne++good good good在一行中清除它。。。我会更进一步,把考试的电子邮件结果和它们对应的SOMC图例范围名称放在一个2-D数组或其他东西中。这将进一步将所有那些精选案例语句压缩为一行或两行:谢谢@Grade'Eh'Bacon和Siddharth!我知道这太复杂了,但你的回答引发了这个问题,很高兴知道@普拉迪普库马尔:你到底在干什么?在这些神秘的时刻保持清醒:是的,这也是一个好建议。