glingДоработал ваш код под свои нужды, но появилась проблема. При очистке дипазона С7:F, выдает ошибку в строке
Код |
---|
Range("A7").Copy: Range("A8:A" & SRow).PasteSpecial Paste:=xlPasteFormulas |
"Метод PasteSpecial из класса Range завершен неверно".
Пытаюсь добавить условие, при котором если дипазон С7:F пуст, очистить диапазон А,
Код |
---|
Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).ClearContents |
но в силу нехватки знаний не получается сделать это правильно. Посоветуйте пожалуйста, что можно сделать в этом случае?
Код |
---|
Sub Fill()
Application.ScreenUpdating = False
If Range("E2") <> "" Then
Dim Sh As Range, iLastRow&
Dim SRow&
Dim SRowD&
Dim SRowE&
SRow = Cells(Rows.Count, 3).End(xlUp).Row
SRowD = Cells(Rows.Count, 4).End(xlUp).Row
SRowE = Cells(Rows.Count, 5).End(xlUp).Row
If SRow < SRowD Then SRow = SRowD
If SRow < SRowE Then SRow = SRowE
Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).ClearContents
Range("A7").FormulaArray = "=--ISNA(MATCH(999,SEARCH(R2C5,RC[2]:RC[4]),1))"
Range("A7").Copy: Range("A8:A" & SRow).PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
Range("E2").Select
Else
Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).ClearContents
End If
Application.ScreenUpdating = True
End Sub
|
Решил таким способом
Код |
---|
SRow = IIf(SRow < 7, 7, SRow)
If SRow > 7 Then
Range("A7").FormulaArray = "=--ISNA(MATCH(999,SEARCH(R2C5,RC[2]:RC[4]),1))"
Range("A7").Copy: Range("A8:A" & SRow).PasteSpecial Paste:=xlPasteFormulas
End If |
Если кто-то предложит более элегантный способ, буду признателен.