nilem, добрый день!
Так и получается, полностью копируется строка: формулы, проверки данных, условное форматирование, просто форматирование. Поэтому макрос и работает по принципу копирования строки.
Я даже не думал делать вставку строки. Сейчас проверил, во вставленной строке остается все кроме формул. Только вот возможно ли переписать макрос, чтобы он потом протягивал формулы? Увы, но VBA я не знаю совсем. Вот макрос:
Код |
---|
Public Function Insert_N_Rows_nc(frr As Variant, nr As Variant) As VariantDim more_ins As Boolean Dim mf As Variant Dim nmf As Variant Dim mfl As Variant Dim aws As WorksheetDim wasn As StringDim IsProtected As BooleanDim Wanm As StringDim earfirst As VariantDim earlast As VariantDim wanum As VariantDim awsn As StringDim rc As VariantDim oSet aws = ActiveSheetrc = -4awsn = aws.NameIsProtected = aws.ProtectionModeIf IsProtected Then Run "UPAS"mf = 1more_ins = TrueIf nr = 1 Then mfl = 1 more_ins = FalseElse While (more_ins) Rows(CStr(frr) & ":" & CStr(frr + mf - 1)).Select Application.CutCopyMode = False Selection.Copy Selection.Ins ert Shift:=xlDown nmf = mf * 2 If nmf * 2 > nr Then more_ins = False Else mf = nmf End If Wend mfl = nr - nmfEnd IfIf mfl > 0 Then Rows(CStr(frr) & ":" & CStr(frr + mfl - 1)).Select Application.CutCopyMode = False Selection.Copy Selection.Ins ert Shift:=xlDown o = 1End IfApplication.CutCopyMode = FalseCells(frr, 1).Sele ctrc = 0e_inr:If IsProtected Then Run "PAS"Se t aws = NothingInsert_N_Rows_nc = rcEnd F unction |
PAS и UNPAS блокируют и разблокируют защищенные ячейки соответственно.