Страницы: 1
RSS
Применение формул Excel в описание диапазона в VBA
 
Здравствуйте!

Пробую свои силы в написание кода макроса для копирования диапазона. У меня получилось сделать, но только с применение ячеек (в которых указаны формулы)
Можно ли как-то описать расчет по формулам внутри самого макроса без использования ячеек?

1 формула в  ячейке J2: =СЧЁТ($J$5:$J$9)
2 формула в ячейке J3: =СТРОКА(J4)

Спасибо!
Код
Sub Макрос4()

   Dim k As Integer, m As Integer

k = Cells(3, 10)
m = Cells(2, 10)
If m <> "0" Then
    Range("J" & k & ":K" & k + m).Copy
    End If

End Sub
 
Цитата
Macedon написал:
Можно ли как-то описать расчет по формулам внутри самого макроса без использования ячеек?
Вы лучше напишите саму ЗАДАЧУ. ЧТО должен подсчитать Ваш макрос?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Macedon написал:
Можно ли как-то описать расчет по формулам внутри самого макроса
А зачем формулы? Прямо макросом и считайте. И согласен с Sanja - опишите задачу, а не вариант решения, который Вам видится верным )
 
Sanja,макрос должен копировать диапазон ячеек, который формируется за счет 2 перечисленных формул: 1 формула определяет начало диапазона, а 2 - конец. Я хочу избавиться от привязки к ячейкам и "прописать" эти формулу внутри макроса без ссылок на ячейки (за исключением внутренних диапазонов  $J$5:$J$9 и J4).
 
Юрий М написал:
Цитата
А зачем формулы? Прямо макросом и считайте.
Как?)

Так не получается;(

k = FormulaR1C1 = "=ROW(4)"
 
Код
Range(Cells(4, "J"), Cells(Cells(Rows.Count, "J").End(xlUp).Row, "J")).Copy
Изменено: kavaka08 - 22.06.2017 13:12:59
 
а зачем считать Строка(J4) если это всегда 4?
 
yozhik,это для одной из таблиц, будет несколько=)
 
Цитата
Macedon написал:
это для одной из таблиц, будет несколько=)
эта формула ничего не даёт, можно было просто написать 4, и ничего не изменится
Изменено: kavaka08 - 22.06.2017 13:18:26
 
Код
Sub Макрос4()
Dim k As Integer, m As Integer
k = 4
m = Cells(Rows.Count, 10).End(xlUp).Row - 3
Range("J4").Resize(m, 2).Copy
End Sub
 
kavaka08,осмыслю ваш макрос, пока вроде работает. Щас попробую от yozhik,
Код
Sub Макрос5()

If Cells(4, 10) <> "" Then
Range(Cells(4, "J"), Cells(Cells(Rows.Count, "J").End(xlUp).Row, "J")).Copy
    End If
    
End Sub 
Код
Sub Макрос6()

Dim k As Integer, m As Integer
If Cells(4, 10) <> "" Then
k = 4
m = Cells(Rows.Count, 10).End(xlUp).Row - 3
Range("J4").Resize(m, 2).Copy
    End If
    
End Sub

Update: Большое Вам спасибо, kavaka08и yozhik!То что, надо  :)  
Изменено: Macedon - 22.06.2017 13:32:38
 
Цитата
Macedon написал:
таблиц, будет несколько
если в разных таблицах в ячейке разные формулы со строками, то
Код
k = Cells(3, 10).Value
m = Cells(Rows.Count, 10).End(xlUp).Row - k + 1
Страницы: 1
Наверх