My VBA program is very long, I can't run the program. There is only the writing error "Compile error: Procedure too large". I have tried changing it into two procedures, but I don't understand how to apply it to my system. can anyone help me in making this into two procedures? or can this program be shortened? Thank you, I really appreciate if you want to help me. Here is the some piece
Private Sub Worksheet_Change(ByVal Target As Range)
Dim varF1 As Variant
Dim i, cel, num As Integer
Dim rtn, myFile, str As String
On Error GoTo Err_cmm1_Click
Select Case Target.Address(False, False)
Case "B3"
Range("B5").Select
Case "B5"
str = Range("B5")
Range("B7") = Trim(Mid(str, Range("I3"), Range("J3") - Range("i3") + 1))
Range("E7") = Mid(str, Range("I5"), Range("J5") - Range("I5") + 1)
myFile = ThisWorkbook.Path & "\Part\" & Range("B7") & ".jpg"
If Dir(myFile) = "" Then
Else
Image1.Picture = LoadPicture(myFile)
End If
myFile = ThisWorkbook.Path & "\Part\" & Range("B7") & "-1.jpg"
If Dir(myFile) = "" Then
Else
Image2.Picture = LoadPicture(myFile)
End If
myFile = ThisWorkbook.Path & "\PIS\" & Range("B7") & ".jpg"
If Dir(myFile) = "" Then
Else
Image3.Picture = LoadPicture(myFile)
End If
Range("B13").Select
Case "B7"
myFile = ThisWorkbook.Path & "\Part\" & Range("B7") & ".jpg"
If Dir(myFile) = "" Then
Else
Image1.Picture = LoadPicture(myFile)
End If
myFile = ThisWorkbook.Path & "\Part\" & Range("B7") & "-1.jpg"
If Dir(myFile) = "" Then
Else
Image2.Picture = LoadPicture(myFile)
End If
myFile = ThisWorkbook.Path & "\PIS\" & Range("B7") & ".jpg"
If Dir(myFile) = "" Then
Else
Image3.Picture = LoadPicture(myFile)
End If
Range("E7").Select
Case "E7"
Range("B13").Select
Case "B17"
Range("C13").Select
Case "C17"
Range("D13").Select
Case "B13"
If Range("B63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("B14").Select
End If
Case "B14"
If Range("B63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("B15").Select
End If
Case "B15"
If Range("B63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("B16").Select
End If
Case "B16"
If Range("B63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("B17").Select
End If
Case "B17"
Range("C13").Select
If Range("C10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case "C13"
If Range("C63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("C14").Select
End If
Case "C14"
If Range("C63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("C15").Select
End If
Case "C15"
If Range("C63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("C16").Select
End If
Case "C16"
If Range("C63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("C17").Select
End If
Case "C17"
Range("D13").Select
If Range("D10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case "D13"
If Range("D63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("D14").Select
End If
Case "D14"
If Range("D63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("D15").Select
End If
Case "D15"
If Range("D63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("D16").Select
End If
Case "D16"
If Range("D63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("D17").Select
End If
Case "D17"
Range("E13").Select
If Range("E10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case "E13"
If Range("E63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("E14").Select
End If
Case "E14"
If Range("E63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("E15").Select
End If
Case "E15"
If Range("E63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("E16").Select
End If
Case "E16"
If Range("E63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("E17").Select
End If
Case "E17"
Range("F13").Select
If Range("F10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case "F13"
If Range("F63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("F14").Select
End If
Case "F14"
If Range("F63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("F15").Select
End If
Case "F15"
If Range("F63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("F16").Select
End If
Case "F16"
If Range("F63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("F17").Select
End If
Case "F17"
Range("G13").Select
If Range("G10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case "G13"
If Range("G63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("G14").Select
End If
Case "G14"
If Range("G63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("G15").Select
End If
Case "G15"
If Range("G63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("G16").Select
End If
Case "G16"
If Range("G63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("G17").Select
End If
Case "G17"
Range("H13").Select
If Range("H10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case "H13"
If Range("H63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("H14").Select
End If
Case "H14"
If Range("H63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("H15").Select
End If
Case "H15"
If Range("H63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("H16").Select
End If
Case "H16"
If Range("H63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("H17").Select
End If
Case "H17"
Range("I13").Select
If Range("I10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case "I13"
If Range("I63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("I14").Select
End If
Case "I14"
If Range("I63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("I15").Select
End If
Case "I15"
If Range("I63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("I16").Select
End If
Case "I16"
If Range("I63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("I17").Select
End If
Case "I17"
Range("J13").Select
If Range("J10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case "J13"
If Range("J63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("J14").Select
End If
Case "J14"
If Range("J63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("J15").Select
End If
Case "J15"
If Range("J63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("J16").Select
End If
Case "J16"
If Range("J63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("J17").Select
End If
Case "J17"
Range("K13").Select
If Range("K10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case "K13"
If Range("K63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("K14").Select
End If
Case "K14"
If Range("K63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("K15").Select
End If
Case "K15"
If Range("K63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("K16").Select
End If
Case "K16"
If Range("K63") ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Else
Range("K17").Select
End If
Case "K17"
Range("L13").Select
If Range("L10") = "" Then
rtn = MsgBox("‘‡”»’è‚Æ‚µ‚ćŠi‚Å‚·‚©?‡Ši‚Ìê‡Au‚Í‚¢vA•s‡Ši‚Ìê‡Au‚¢‚¢‚¦v‚ð‘I‘ð‚µ‚Ä‰º‚³‚¢B", vbYesNo)
i = 1
Do While (Worksheets("Record").Cells(i, 1)) ""
i = i + 1
Loop
If rtn = vbYes Then
Range("G1") = "OK"
GoTo step1
Else
Range("G1") = "NG"
GoTo step1
End If
End If
Case Else
End Select
Exit Sub
step1:
Touroku
Exit_cmm1_Click:
Exit Sub
Err_cmm1_Click:
MsgBox Err.Description
Resume Exit_cmm1_Click
End Sub
GoTostatement it's nearly impossible to figure out your logic. You haveLoopstatements mixed inside ofIfstatements. That's never good. Look at the things that are repetitive in your code like where it's determining OK or NG and turn that into a function instead. (you will have to get rid of all theGoTostatements first.)