Function FindAndInsert(ByRef sh As Worksheet, ByVal txt As String, _
ByVal OffsetY As Long, ByVal OffsetX As Long, Optional ByVal NewValue = Null) As Range
' ищет на листе sh ячейку, содержащую текст txt,
' после чего (если задано значение NewValue) в ячейку со смещением OffsetY , OffsetX
' вставляет формулу (в стиле R1C1) NewValue
' Возвращает ячейку, предназначенную для вставки
On Error Resume Next: Err.Clear
Set FindAndInsert = sh.UsedRange.Find(txt, , xlValues, xlPart) '.MergeArea.Cells(1)
If FindAndInsert Is Nothing Then
Debug.Print "Не найдена ячейка", "Лист: """ & sh.Name & """, строка """ & txt & """", 2
Err.Clear: Exit Function
End If
'Debug.Print FindAndInsert.Address, FindAndInsert.Offset(OffsetY, OffsetX).Address
Set FindAndInsert = FindAndInsert.Offset(OffsetY, OffsetX)
If IsNull(NewValue) Then Exit Function
Err.Clear: FindAndInsert.FormulaR1C1 = NewValue
If Err Then
Debug.Print "Не удалось вставить формулу", "Лист: """ & sh.Name & """, формула """ & _
NewValue & """, ячейка " & FindAndInsert.Address, 2
Err.Clear: Exit Function
End If
End Function
Комментарии
Отправить комментарий