Ищу четвертый день решение в интернете, к сожалению не получается. Я начинающий в программировании VBA, прошу быть по снисходительнее, пожалуйста.
На активном листе следующий макрос:
Код
Sub Вставка_формулы_в_область()
' Поиск
Cells.Find(What:="столб").Activate
'вставка формулы в выделенную область
ActiveCell.Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=RC[-2]+RC[-1]"
End Sub
ищет слово "столб" и проставляет формулу в столбце до последней строки, где есть данные, анализируя столбец "А".
Суть проблемы в том, что от первой строки до строки в которой находится слово "столб" есть пропущенные строки, их я удалить не могу (нужны в процессе работы), так вот макрос проставляет формулу в столбце ниже ровно на столько сколько я отступил сверху строк, т.е. выходит за нужный мне диапазон. И не получается поставить "If" в совокупе с "MxBox" для вывода окошка "заголовок "столбец" не найден"
Sub Вставка_формулы_в_область()
Dim iCl As Range, iRow&
With ActiveSheet
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set iCl = .UsedRange.Find("столб")
If Not iCl Is Nothing Then
iCl.Offset(1).Resize(lRow - iCl.Row).FormulaR1C1 = "=RC[-2]+RC[-1]"
Else
MsgBox "Столбец 'столб' не найден!", vbCritical
Exit Sub
End If
End With
End Sub
А вообще, вставлять макросом формулы это не комильфо Считайте нужное в самом коде, а на лист выгружайте готовые значения
Согласие есть продукт при полном непротивлении сторон
Sanja написал: А вообще, вставлять макросом формулы это не комильфо
Огромнейшее Вам СПАСИБО! то что нужно. а по поводу вставлять формулу, я не нашёл ничего иного как вставив формулу следом вставить только её значения, внизу код. Как вы считаете это рациональное решение..? Большое спасибо за помощь..!
Код
Sub вставка_формулы2()
Dim iCl As Range, iRow&
With ActiveSheet
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set iCl = .UsedRange.Find("столб")
If Not iCl Is Nothing Then
iCl.Offset(1).Resize(lRow - iCl.Row).FormulaR1C1 = "=RC[-2]+RC[-1]"
`вот моё решение
iCl.Offset(1).Resize(lRow - iCl.Row).Activate
For Each ar In Selection.Areas
ar.Value = ar.Value
Next ar
Else
MsgBox "Заголовок `столб`не найден!", vbCritical
Exit Sub
End If
End With
End Sub
murad.v.mir написал: вставив формулу следом вставить только её значения
Тогда лучше так, без цикла по ячейкам
Код
Sub Вставка_формулы_в_область()
Dim iCl As Range, iRow&
With ActiveSheet
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set iCl = .UsedRange.Find("столб")
If Not iCl Is Nothing Then
With iCl.Offset(1).Resize(lRow - iCl.Row)
.FormulaR1C1 = "=RC[-2]+RC[-1]"
.Value = .Value
End With
Else
MsgBox "Столбец 'столб' не найден!", vbCritical
Exit Sub
End If
End With
End Sub
Согласие есть продукт при полном непротивлении сторон