Сразу извинюсь, форма большая сложная и содержит комм. тайну, выложить не могу. Суть проблемы в том, что форма иногда "зависает", т.е. перестает пересчитываться. Решение проблемы как бы есть, но я не могу понять логики. Поясню: помогает удаление строки, которое делается по макросу. Вот код:
With Application
.ReferenceStyle = xlA1
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
RB = ActiveCell.Row
CB = ActiveCell.Column
MaxLen = [R1]
If (RB > 11) And (RB <= MaxLen) Then
ActiveSheet.Unprotect Password:="xxxxxxxx"
Dlina = ActiveSheet.Range("R1").Value
ActiveSheet.Range("R1").Value = Dlina - 1
Rows(RB).EntireRow.Delete
Cells(RB, CB).Select
ActiveSheet.Protect Password:="xxxxxxxx"
End If
With Application
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
НО!!! аналогичный нижеследующий код не помогает!!!
With Application
.ReferenceStyle = xlA1
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
RB = ActiveCell.Row
CB = ActiveCell.Column
Dim FromLitera As Variant
Dim ToLitera As Variant
FromLitera = Array("B", "D", "F", "H")
ToLitera = Array("B", "D", "F", "K")
If RB > 11 Then
ActiveSheet.Unprotect Password:="0002"
Dlina = ActiveSheet.Range("R1").Value
ActiveSheet.Range("R1").Value = Dlina + 1
ActiveCell.EntireRow.Insert
ActiveSheet.Rows(RB + 1).Copy
ActiveSheet.Rows(RB).PasteSpecial Paste:=xlPasteAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
For i = 0 To 3
ActiveSheet.Range(FromLitera(i) & RB & ":" & ToLitera(i) & RB).ClearContents
Next i
Cells(RB, CB).Select
ActiveSheet.Protect Password:="0002"
End If
With Application
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
Включение-выключение макропараметров одинаково, разница в том что в одном коде удаление строки, в другом вставка. В чем прикол с удалением строки? Проблема - блажь, но дюже непонятно.
With Application
.ReferenceStyle = xlA1
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
RB = ActiveCell.Row
CB = ActiveCell.Column
MaxLen = [R1]
If (RB > 11) And (RB <= MaxLen) Then
ActiveSheet.Unprotect Password:="xxxxxxxx"
Dlina = ActiveSheet.Range("R1").Value
ActiveSheet.Range("R1").Value = Dlina - 1
Rows(RB).EntireRow.Delete
Cells(RB, CB).Select
ActiveSheet.Protect Password:="xxxxxxxx"
End If
With Application
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
НО!!! аналогичный нижеследующий код не помогает!!!
With Application
.ReferenceStyle = xlA1
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
RB = ActiveCell.Row
CB = ActiveCell.Column
Dim FromLitera As Variant
Dim ToLitera As Variant
FromLitera = Array("B", "D", "F", "H")
ToLitera = Array("B", "D", "F", "K")
If RB > 11 Then
ActiveSheet.Unprotect Password:="0002"
Dlina = ActiveSheet.Range("R1").Value
ActiveSheet.Range("R1").Value = Dlina + 1
ActiveCell.EntireRow.Insert
ActiveSheet.Rows(RB + 1).Copy
ActiveSheet.Rows(RB).PasteSpecial Paste:=xlPasteAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
For i = 0 To 3
ActiveSheet.Range(FromLitera(i) & RB & ":" & ToLitera(i) & RB).ClearContents
Next i
Cells(RB, CB).Select
ActiveSheet.Protect Password:="0002"
End If
With Application
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
Включение-выключение макропараметров одинаково, разница в том что в одном коде удаление строки, в другом вставка. В чем прикол с удалением строки? Проблема - блажь, но дюже непонятно.