, когда я запускаю свой код VBA, нажимая на командную кнопку, «Excel перестало работать» продолжает появляться, и приложение вылетает. Я пытался выяснить, откуда возникла проблема, нажав F8, но ошибка не появилась.
Вот некоторые условия моей рабочей тетради:
рабочие листы не видны, потому что пользовательская форма закрывает экран отверстия. он исчезнет только при использовании пароля.
Ошибка появляется, когда я нажимаю командную кнопку, чтобы запустить код, но есть 2 исключения:
когда я редактирую свой код (даже несущественные изменения), код будет работать нормально только 1 раз, а затем снова появится ошибка.
когда я использую пароль и запускаю форму пользователя вручную или когда я отлаживаю ее с помощью клавиши F8
Sub price_rep2()
Unload price_rep_frm
ok = False
For kl = 7 To WorksheetFunction.CountA(Sheets(9).Range("B:B")) + 5
If Sheets(9).Range("B" & kl) = Sheets(1).Range("B" & Label44.Caption) Then
ok = True
Exit For
End If
Next kl
If ok = False Then
f = MsgBox("error", vbCritical + vbOKOnly, "error")
Exit Sub
End If
If Sheets(5).Range("A6") > 10 Then
uandme = MsgBox("error", vbCritical + vbOKOnly, "error")
Exit Sub
Else
Sheets(5).Range("A6") = Sheets(5).Range("A6") + 1
End If
Application.ScreenUpdating = False
Range("A1").Select
Selection.Copy
Cells.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.ClearContents
Range("A1").Select
Sheets(8).Range("C2") = Sheets(5).Range("KQ12")
Sheets(8).Range("D2") = Sheets(5).Range("KQ45")
Sheets(8).Range("E2") = Sheets(5).Range("KQ46")
Sheets(8).Range("F2") = Sheets(5).Range("KQ47")
Sheets(8).Range("G2") = Sheets(5).Range("KQ48")
Sheets(8).Range("H2") = Sheets(5).Range("KQ49")
Sheets(8).Range("I2") = Sheets(5).Range("KQ50")
Sheets(8).Range("J2") = Sheets(5).Range("KQ51")
Sheets(8).Range("K2") = Sheets(5).Range("KQ60")
Sheets(8).Range("L2") = Sheets(5).Range("KQ52")
Sheets(8).Range("M2") = Sheets(5).Range("KQ53")
Sheets(8).Range("N2") = Sheets(5).Range("KQ54")
Sheets(8).Range("O2") = Sheets(5).Range("KQ55")
Sheets(8).Range("P2") = Sheets(5).Range("KQ56")
Sheets(8).Range("Q2") = Sheets(5).Range("KQ57")
Sheets(8).Range("R2") = Sheets(5).Range("KQ58")
Sheets(8).Range("S2") = Sheets(5).Range("KQ59")
radif = 3
finded = False
For i = 7 To WorksheetFunction.CountA(Sheets(9).Range("B:B")) + 5
If Sheets(9).Range("B" & i) = Sheets(1).Range("B" & Label44.Caption) And Sheets(9).Range("D" & i) = ComboBox1.Text Then
Sheets(8).Range("C" & radif) = Sheets(9).Range("C" & i)
Sheets(8).Range("D" & radif) = Sheets(9).Range("D" & i)
Sheets(8).Range("F" & radif) = Sheets(9).Range("E" & i) * Sheets(9).Range("F" & i) * (Sheets(9).Range("G" & i))
Sheets(8).Range("G" & radif) = Sheets(9).Range("H" & i)
Sheets(8).Range("H" & radif) = Sheets(9).Range("I" & i)
Sheets(8).Range("I" & radif) = Sheets(9).Range("J" & i)
Sheets(8).Range("J" & radif) = Sheets(9).Range("K" & i)
Sheets(8).Range("K" & radif) = Sheets(9).Range("R" & i)
Sheets(8).Range("L" & radif) = Sheets(9).Range("L" & i)
Sheets(8).Range("M" & radif) = Sheets(9).Range("M" & i)
Sheets(8).Range("N" & radif) = Sheets(9).Range("N" & i)
Sheets(8).Range("O" & radif) = Sheets(9).Range("O" & i)
Sheets(8).Range("P" & radif) = Sheets(9).Range("P" & i)
Sheets(8).Range("Q" & radif) = Sheets(9).Range("Q" & i)
finded = True
radif = radif + 1
End If
Next i
If finded = False Then
Exit Sub
End If
For kl = 7 To WorksheetFunction.CountA(Sheets(3).Range("B:B")) + 5
If Sheets(3).Range("D" & kl) = ComboBox1.Text And Sheets(3).Range("B" & kl) = Sheets(1).Range("B" & Label44.Caption) Then
sabt = False
mat_tot = 0
For ko = 3 To WorksheetFunction.CountA(Sheets(8).Range("C:C")) + 1
If Sheets(8).Range("C" & ko) = Sheets(2).Range("C" & (Sheets(3).Range("C" & kl))) Then
If Sheets(3).Range("AI" & kl) = Sheets(5).Range("KG3") Or Sheets(3).Range("AI" & kl) = Sheets(5).Range("KG6") Then
For ki = 9 To 25 Step 2
If Sheets(3).Cells(kl, ki) = material_insert_frm.Label79.Caption Or Sheets(3).Cells(kl, ki) = material_insert_frm.Label540.Caption Then
If Sheets(3).Range("AC" & kl) <> "" Then
mat_tot = mat_tot + (Sheets(3).Cells(kl, ki + 1) * (1 + Sheets(3).Range("AC" & kl)))
Else
mat_tot = mat_tot + (Sheets(3).Cells(kl, ki + 1))
End If
sabt = True
Exit For
End If
Next ki
ElseIf Sheets(3).Range("AI" & kl) = Sheets(5).Range("KG4") Then
For ki = 9 To 25 Step 2
If Sheets(3).Cells(kl, ki) = material_insert_frm.Label75.Caption Then
For ku = 9 To 25 Step 2
If Sheets(3).Cells(kl, ku) = material_insert_frm.Label76.Caption Then
If Sheets(3).Range("AC" & kl) <> "" Then
mat_tot = mat_tot + ((((Sheets(3).Cells(kl, ku + 1) * Sheets(3).Cells(kl, ki + 1)) * (1 + Sheets(3).Range("AC" & kl))) / 1000000))
Else
mat_tot = mat_tot + (((Sheets(3).Cells(kl, ku + 1) * Sheets(3).Cells(kl, ki + 1)) / 1000000))
End If
sabt = True
Exit For
End If
Next ku
End If
If sabt = True Then
Exit For
End If
Next ki
ElseIf Sheets(3).Range("AI" & kl) = Sheets(5).Range("KG5") Then
For ki = 9 To 25 Step 2
If Sheets(3).Cells(kl, ki) = material_insert_frm.Label75.Caption Then
If Sheets(3).Range("AC" & kl) <> "" Then
mat_tot = mat_tot + (((Sheets(3).Cells(kl, ki + 1) * (1 + Sheets(3).Range("AC" & kl)))))
Else
mat_tot = mat_tot + ((Sheets(3).Cells(kl, ki + 1)))
End If
sabt = True
Exit For
End If
Next ki
ElseIf Sheets(3).Range("E" & kl) = Sheets(5).Range("KO9") Then
For ki = 9 To 25 Step 2
If Sheets(3).Cells(kl, ki) = material_insert_frm.Label487.Caption Then
If Sheets(3).Range("AC" & kl) <> "" Then
mat_tot = mat_tot + ((((Sheets(3).Cells(kl, ki + 1) * (1 + Sheets(3).Range("AC" & kl)))) * Sheets(2).Range("F" & (Sheets(3).Range("C" & kl)))) / 1000)
Else
mat_tot = mat_tot + (((Sheets(3).Cells(kl, ki + 1)) / 1000))
End If
sabt = True
Exit For
End If
Next ki
ElseIf Sheets(3).Range("E" & kl) = Sheets(5).Range("KO13") Then
For ki = 9 To 25 Step 2
If Sheets(3).Cells(kl, ki) = material_insert_frm.Label75.Caption Then
For ku = 9 To 25 Step 2
If Sheets(3).Cells(kl, ku) = material_insert_frm.Label76.Caption Then
For kou = 9 To 25 Step 2
If Sheets(3).Cells(kl, kou) = material_insert_frm.Label415.Caption Then
If Sheets(3).Range("AC" & kl) <> "" Then
mat_tot = mat_tot + (((Sheets(3).Cells(kl, ku + 1) / 1000 * Sheets(3).Cells(kl, ki + 1) / 1000 * 4) + (Sheets(3).Cells(kl, ki + 1) / 1000 * Sheets(3).Cells(kl, kou + 1) / 1000 * 2) + (Sheets(3).Cells(kl, ku + 1) / 1000 * Sheets(3).Cells(kl, kou + 1) / 1000 * 2)) * (1 + Sheets(3).Range("AC" & kl)))
Else
mat_tot = mat_tot + (((Sheets(3).Cells(kl, ku + 1) / 1000 * Sheets(3).Cells(kl, ki + 1) / 1000 * 4) + (Sheets(3).Cells(kl, ki + 1) / 1000 * Sheets(3).Cells(kl, kou + 1) / 1000 * 2) + (Sheets(3).Cells(kl, ku + 1) / 1000 * Sheets(3).Cells(kl, kou + 1) / 1000 * 2)))
End If
sabt = True
Exit For
End If
Next kou
End If
If sabt = True Then
Exit For
End If
Next ku
End If
If sabt = True Then
Exit For
End If
Next ki
End If
If Sheets(3).Range("H" & kl) <> Sheets(5).Range("KO15") Then
kode_anbar = True
Else
kode_anbar = False
End If
If kode_anbar = True Then
For i = 3 To WorksheetFunction.CountA(Sheets(5).Range("KU2:KU1000000")) + 1
If Sheets(3).Range("H" & kl) = Sheets(5).Range("KU" & i) Then
Sheets(8).Range("E" & ko) = Sheets(8).Range("E" & ko) + (mat_tot * Sheets(5).Range("LA" & i))
Exit For
End If
Next i
Exit For
Else
If Sheets(3).Range("AD" & kl) <> "" Then
Sheets(8).Range("E" & ko) = Sheets(8).Range("E" & ko) + (mat_tot * Sheets(3).Range("AD" & kl))
Exit For
End If
End If
End If
Next ko
End If
Next kl
Sheets(1).Range("A1") = 1
Unload Me
Unload start_frm
yy = WorksheetFunction.CountA(Sheets(8).Range("C:C")) + 1
Sheets(8).Range("C2:S" & yy).Select
With Selection.Font
.Name = "B Nazanin"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Columns("C:S").EntireColumn.AutoFit
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Sheets(8).Range("C2:S2").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark2
.TintAndShade = -0.249977111117893
.PatternTintAndShade = 0
End With
Set x = ActiveWorkbook
nam = x.Path
Set y = Workbooks.Add
y.SaveAs Filename:=nam & "\price_rep2.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
x.Sheets(8).Copy before:=Workbooks("price_rep2.xlsx").Sheets(1)
Application.ScreenUpdating = True
y.Close (True)
x.Close (True)
End Sub