Vba excel протянуть формулу по столбцу

 

Евгений Квитницкий

Пользователь

Сообщений: 212
Регистрация: 01.01.1970

#1

13.03.2013 20:49:12

Доброго времени суток господа.
Помогите победить кусок кода, а именно:
надо макросом протянуть формулу.
и именно ActiveCell вместо Range

Код
   ActiveCell.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-9],StandDB!C[-10]:C[21],11,0),"""")" 

Пробовал такой вариант — не работает

Код
 nr = Range("C5", Range("C5").End(xlDown)).Rows.Count
  Range("K6").AutoFill Range("K6:K" & nr) 

не то форматирование применил, сорри

Изменено: Евгений Квитницкий13.03.2013 20:58:44

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

Вставляете код — отключайте смайлы.

 

Никаких идей, по вопросу выше ?

 

Sergei_A

Пользователь

Сообщений: 443
Регистрация: 05.01.2013

#4

14.03.2013 08:53:06

Попробуйте на пустом листе мою незамысловатую формулу протянуть.

Код
Sub formula()
'подготовим что считать
For i = 1 To 10
Cells(i, 2) = i: Cells(i, 3) = i + 20
Next

'протянем формулу
For i = 1 To 10
Cells(i, 1).Activate
'именно ActiveCell
ActiveCell = "=$B" & i & "+$C" & i
Next

End Sub
 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

Попробуйте

Range.FillDown  

копирует содержимое и форматирование
из верхней строки в остальные строки
диапазона Range

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#6

14.03.2013 12:48:06

Цитата
Евгений Квитницкий пишет:
надо макросом протянуть формулу.
и именно ActiveCell вместо Range

Хитро вопрос сформулирован.
И где в ФОРМУЛЕ ActiveCell ?
А если надо поместить формулу «=IFERROR(VLOOKUP(RC[-9],StandDB!C[-10]:C[21],11,0),»»»»)» в столбец, то

Код
[A1:A10].FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC[-9],StandDB!C[-10]:C[21],11,0),"""")" 

именно это и сделает.

 

Я не знаю в каком именно столбце будет эта формула.
ячейка, в какую надо вписать формулу и протянуть вниз(на неопределенное заранее кол-во строк) расчитывается по условию offset от найденой необходимой ячейки. Это может быть как С1 так и F12 и тд
пример прилагается

Изменено: Евгений Квитницкий15.03.2013 00:39:24

 

Sergei_A

Пользователь

Сообщений: 443
Регистрация: 05.01.2013

#8

14.03.2013 16:12:04

Выделяете ячейку с формулой и запускаете макрос

Код
Sub formula()
LR = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
With ActiveCell
.AutoFill Destination:=.Resize(LR - .Row + 1, 1), Type:=xlFillDefault
End With
End Sub
 

Евгений Квитницкий

Пользователь

Сообщений: 212
Регистрация: 01.01.1970

#9

14.03.2013 16:30:54

Sergei_A, спасибо большое,
именно то что надо.

Изменено: Евгений Квитницкий14.03.2013 16:31:11

SAA

0 / 0 / 0

Регистрация: 01.07.2011

Сообщений: 3

1

Протягивание формулы до последней строки с данными в макросе

01.07.2011, 14:33. Показов 27586. Ответов 12

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день!

Создала макрос через «Запись макроса»
Мне нужно протянуть несколько формул по столбцу до последней строки с данными.
Макрос записал протягивание только до конкретной ячейки. Так как в отчете каждый раз меняется количество строк, я не могу указать в макросе конкретную ячейку до которой будут заполняться формулы.
Как это исправить?

Отрывок из макроса:

Visual Basic
1
2
3
4
Range("N6:O6").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("N6:O35")

Есть также решение с заполнением всей колонки

Visual Basic
1
2
3
4
    Range("N6:O6").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range([N6], Cells([N6].End(xlDown).Row, Columns("O").Column))

Но, если макрос будет заполнять все миллион строк возможных в excel, большая часть из которых пустые, то он будет подвисать.

Мне нужно протянуть несколько формул по столбцу до последней строки с данными.

Это возможно сделать?

В примере формулы находятся на втором листе. Макрос в примере есть

Вложения

Тип файла: rar Prosroch1пример.rar (24.7 Кб, 219 просмотров)



0



Gibboustooth

735 / 203 / 11

Регистрация: 23.06.2011

Сообщений: 440

01.07.2011, 14:40

2

Visual Basic
1
Cells.Find("*", , , , xlByRows, xlPrevious).Row



2



0 / 0 / 0

Регистрация: 01.07.2011

Сообщений: 3

01.07.2011, 15:07

 [ТС]

3

К сожалению не поняла как вставить в код



0



Gibboustooth

735 / 203 / 11

Регистрация: 23.06.2011

Сообщений: 440

01.07.2011, 15:21

4

Цитата
Сообщение от SAA
Посмотреть сообщение

К сожалению не поняла как вставить в код

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub test()
   Dim Endrow As Long
   
   Const StartRow = 6
   Const StartCol = 14
   Const EndCol = 15
   
   Endrow = Cells.Find("*", , , , xlByRows, xlPrevious).Row
   Range(Cells(StartRow, StartCol), Cells(Endrow, EndCol)).FillDown
End Sub



1



0 / 0 / 0

Регистрация: 01.07.2011

Сообщений: 3

01.07.2011, 17:09

 [ТС]

5

Спасибо!



0



Parklane

0 / 0 / 0

Регистрация: 14.02.2013

Сообщений: 3

18.09.2013, 17:06

6

У меня такая ситуация:

Вот взял ваш код, вставил себе в макрос

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim Endrow As Long
  
 
   Const StartRow = 2
   Const StartCol = 5
   Const EndCol = 9
'Const StartRow = 2
  ' Const StartCol = 13
   'Const EndCol = 13
   
 Endrow = Cells.Find("*", , , , xlByRows, xlPrevious).Row
   Range(Cells(StartRow, StartCol), Cells(Endrow, EndCol)).FillDown

Но у меня после 9 столбца идут данные, и в 13 столбце ещё колонка с формулой.
Как можно делать так, чтобы он потом протягивал ещё и 13 колонку вниз?
Когда указываю

Visual Basic
1
2
3
   Const StartRow = 2
   Const StartCol = 5
   Const EndCol = 9

то он и колонки с 9 по 12 протягивает вниз(то есть проставляются данные, которые находятся во 2 строке)



0



Поц

-1 / 0 / 0

Регистрация: 03.06.2018

Сообщений: 8

16.10.2018, 19:40

7

Visual Basic
1
2
3
4
5
Dim a, s **
a = Range("e" & Cells(Rows.Count, 5).End(xlUp).Row).Address **
s = a & ":" & Range("e" & Cells(Rows.Count, 1).End(xlUp).Row).Address **
On Error Resume Next **
* *Range(a).AutoFill Destination:=Range(s), Type:=xlFillDefault **



0



ᴁ®

Эксперт MS Access

3069 / 1735 / 361

Регистрация: 13.12.2016

Сообщений: 5,937

Записей в блоге: 4

16.10.2018, 22:11

8

Поц, Это VBA? или вы …. Поц



0



0 / 0 / 0

Регистрация: 17.01.2019

Сообщений: 14

18.01.2019, 13:21

9

Почему-то процесс идет некорректно, VBA выдает сообщение: Application-time error ‘1004’ Application-defined or object-defined error. И проблемным содержимым выделяется строка, содержащая: Endrow = Cells.Find(«*», , , , xlByRows, xlPrevious).Row. Если же проверку выключить командой On Error Resume Next, то процесс вообще зависает.



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.01.2019, 13:50

10

Nik Toiler, приложите файл-пример со своей задачей. Возможно, этот метод поиска последней строки и не нужен.



0



0 / 0 / 0

Регистрация: 17.01.2019

Сообщений: 14

18.01.2019, 15:40

11

Теперь VBA пишет, что макросы отключены….



0



0 / 0 / 0

Регистрация: 17.01.2019

Сообщений: 14

18.01.2019, 15:43

12

Теперь VBA пишет, что макросы отключены.



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.01.2019, 19:29

13

Nik Toiler, у меня Find работает без ошибок, Endrow = 9.
Ошибка «макросы отключены» на строке Application.Run «Copy» вызвана тем, что в проекте два модуля с одинаковым кодом, в обоих есть процедура «Copy», и приложение не знает, какую из них выполнять.
Кстати можно просто Copy , тогда будет вызвана процедура из этого же модуля.



0



Автор samobar48, 24 июля 2018, 10:23

На листе всегда динамическое количество строк.
Мне необходимо протянуть формулу до последней заполненной строчки.
При записи макрокодером макрос записывает статическое количество строк.
Как сделать так, чтобы протяжка формулы происходила до последней строчки с данными?

Пример макроса

Attribute VB_Name = «Module10»
Sub Вопрос()
Attribute Вопрос.VB_ProcData.VB_Invoke_Func = » n14″

‘ Вопрос Макрос


    Range(«E2»).Select
    ActiveCell.FormulaR1C1 = «Точность»
    Range(«E3»).Select
    ActiveCell.FormulaR1C1 = «=1-RC[-2]/RC[-1]»
    Range(«E3»).Select
    Selection.AutoFill Destination:=Range(«E3:E9»)
    Range(«E3:E9»).Select
End Sub

[свернуть]

[вложение удалено администратором]



Администратор

  • Administrator
  • Сообщения: 2,252
  • Записан
Макрос

Sub Макрос()

    Dim lr As Long

        ‘ Поиск последней строки по столбцу A.
        ‘ End не ищет в скрытых строках.
        ‘ Это действие аналогично тому, как вы переходите в самый низ листа (т.е. на строку 1 млн),
        ‘ а затем нажимаете сочетание клавиш ‘Ctrl + стрелка вверх’.
    lr = Cells(Rows.Count, «A»).End(xlUp).Row

    Range(«E2»).FormulaR1C1 = «Точность»
    Range(«E3»).FormulaR1C1 = «=1-RC[-2]/RC[-1]»
    Range(«E3»).AutoFill Destination:=Range(«E3:E» & lr)

End Sub

[свернуть]



  • Форум по VBA, Excel и Word

  • VBA, Excel

  • VBA, макросы в Excel

  • Excel VBA Макросы: Протягивание формулы до последней заполненной строчки.

_Boroda_ Дата: Пятница, 07.06.2019, 14:20 | Сообщение № 2

Ответить

Фортуна777 Дата: Пятница, 07.06.2019, 14:34 | Сообщение № 3
_Boroda_ Дата: Пятница, 07.06.2019, 14:44 | Сообщение № 4

И зачем Вы мне постоянно в личку пишете? Я Вам уже ответил — обращайтесь на форум. В личку — платно

Исправляйте свой первый пост. Решение уже минут 15 ждет Вас
И прочитайте Правила форума

И зачем Вы мне постоянно в личку пишете? Я Вам уже ответил — обращайтесь на форум. В личку — платно

Исправляйте свой первый пост. Решение уже минут 15 ждет Вас
И прочитайте Правила форума _Boroda_

Скажи мне, кудесник, любимец ба’гов.
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Ответить

И зачем Вы мне постоянно в личку пишете? Я Вам уже ответил — обращайтесь на форум. В личку — платно

Исправляйте свой первый пост. Решение уже минут 15 ждет Вас
И прочитайте Правила форума Автор — _Boroda_
Дата добавления — 07.06.2019 в 14:44

Источник

ПОМОГИТЕ С МАКРОСОМ

Range(«AD1»).Select
ActiveCell.FormulaR1C1 = «=MID(C9,11,10)»
Selection.AutoFill Destination:=Range(«AD1:AD690»), Type:=xlFillDefault
Range(«AD1:AD690»).Select
Selection.AutoFilter

Создала макрос через «Запись макроса»
Мне нужно протянуть формулу по столбцу до последней строки с данными.
Макрос записал протягивание только до конкретной ячейки. Как это исправить?

Записываемый макрос не может делать многих вещей, например содержать циклы, проверки условий и т. п.
Но самое ценное — он содержит примеры команд с их параметрами, которые нельзя зачастую найти в справочнике.
Беря эти команды и параметры мы можем заглянуть в справочник и пополнить себя кое-какими знаниями о команде,
Можем использовать команду в тестовом макросе, поиграть её параметрами изучить её поглубже.

Свои функции-макросы мы создаём для многократного употребления, либо для однократного употребления — но в больших массивах.
В больших массивах мы можем для обработки выбрать обычно выбрать только одну ячейку или один диапазон в виде строки или столбца. В крайнем случае это диапазон математической матрицы.
Записать массивом мы можем только копию массива.
Записать вычисленный результат мы можем только в одну ячейку, Поэтому запрограммированный макрос обработки, как правило работает с ячейкой, способен определить её адрес, перейти в какую-то соседнюю ячейку, как требуется по алгоритму. Всякие ручные действия вроде протяжки курсором тоже можно запрограммировать, в виде расширения выборки, если знать специальные команды, или применяя цикл.
Но в конечном итоге макрос должен или просто знать куда дотянуть курсор, или уметь автоматически вычислить это место.

Мне не видно с какой целью и конкретно куда вы делаете протяжку.
Если вы это знаете, то подмените в вашем макросе номер строки, только и всего.
Но посмотреть этот номер надо до запуска и корректировки макроса.
Макрос мог бы и сам автоматически определить номер строки, если это граница области, заполненной данными, или в данных присутствует какое-то условие.
Некоторые вещи вы делаете на глаз, и поэтому записать в виде алгоритма не можете. поэтому старайтесь придумывать всякие проверки условий, какие-то приемы, которые вы могли бы заложить в правильно действующий алгоритм.

Для обработки массивов определённой или неопределенной формы очень полезен цикл типа
FOR EACH
NEXT
Изучите его, он может пригодиться.

Еще раз подчеркну, что ручной макрос всегда требует корректировки.
Во-первых, он должен быть вами откомментирован, чтобы вы сами понимали в каких условиях он может работать, с какой ячейки должен стартовать, какие габариты таблиц обрабатывать и прочее.
Если он не будет стартовать с правильной ячейки, данные будут наверняка испорчены.

Если вы в таблицу вставите какую-то строку-заголовок или описательны текст, данные поползут и макрос станет непригоден.

Вы должны понимать что такое относительная адресация, в которой обычно Excel работает, позволяя копировать формулы, добавлять строки данных без особых хлопот,
и что такое абсолютная адресация в которой хлопоты создаются.
Макрос и данные являются сильно связанными, и макрос может стать непригодным при каких-то изменениях Листа

Источник

Vba excel протянуть формулу по столбцу

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
Selection.NumberFormat = «#,##0.00»

Понимаю что жутко избыточен, делал на основе нескольких макросов записанных в режиме камеры.

Большое спасибо за помощь!
В прикрепленном файле пример с цифрами.

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
Selection.NumberFormat = «#,##0.00»

Понимаю что жутко избыточен, делал на основе нескольких макросов записанных в режиме камеры.

Большое спасибо за помощь!
В прикрепленном файле пример с цифрами. farafonov_sv

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(«A1:A6»)
Selection.NumberFormat = «#,##0.00»

Понимаю что жутко избыточен, делал на основе нескольких макросов записанных в режиме камеры.

Большое спасибо за помощь!
В прикрепленном файле пример с цифрами. Автор — farafonov_sv
Дата добавления — 25.11.2011 в 11:26

Jhonson Дата: Пятница, 25.11.2011, 11:49 | Сообщение № 2

Не совсем понятно что нужно, попробуйте такой код:

(дописал несколько строчек сверху Вашего кода, и поменял ActiveCell.Range(«A1:A6») на ActiveCell.Range(a),
код не проверял, но должно работать)

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()

i = 1
Do While Cells(i, 1) <> «»
i = i + 1
Loop
a = «a1:a» & i — 1

Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(a)
Selection.NumberFormat = «#,##0.00»
End Sub

Не совсем понятно что нужно, попробуйте такой код:

(дописал несколько строчек сверху Вашего кода, и поменял ActiveCell.Range(«A1:A6») на ActiveCell.Range(a),
код не проверял, но должно работать)

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()

i = 1
Do While Cells(i, 1) <> «»
i = i + 1
Loop
a = «a1:a» & i — 1

Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(a)
Selection.NumberFormat = «#,##0.00»
End Sub

«Ничто не приносит людям столько неприятностей, как разум.»

Сообщение Не совсем понятно что нужно, попробуйте такой код:

(дописал несколько строчек сверху Вашего кода, и поменял ActiveCell.Range(«A1:A6») на ActiveCell.Range(a),
код не проверял, но должно работать)

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Private Sub CommandButton1_Click()

i = 1
Do While Cells(i, 1) <> «»
i = i + 1
Loop
a = «a1:a» & i — 1

Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-5%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-1]*(1-45%)»
Selection.AutoFill Destination:=ActiveCell.Range(a)
ActiveCell.Offset(0, 1).Range(«A1»).Select
Selection.NumberFormat = «#,##0.00»
ActiveCell.FormulaR1C1 = «=RC[-3]/(1-50%)»
ActiveCell.Offset(0, 0).Range(«A1»).Select
Selection.AutoFill Destination:=ActiveCell.Range(a)
Selection.NumberFormat = «#,##0.00»
End Sub

farafonov_sv Дата: Пятница, 25.11.2011, 12:15 | Сообщение № 3

Спасибо!
Поставил ваш код в строке:
Selection.AutoFill Destination:=ActiveCell.Range(«a») выдает ошибку

Мне надо что бы формулы рассчитывались по всему списку, не зависимо от того сколько строк в С1 (так как таблицы каждый раз разные может быть 2 строки а может за пару сотен)

Спасибо!
Поставил ваш код в строке:
Selection.AutoFill Destination:=ActiveCell.Range(«a») выдает ошибку

Мне надо что бы формулы рассчитывались по всему списку, не зависимо от того сколько строк в С1 (так как таблицы каждый раз разные может быть 2 строки а может за пару сотен) farafonov_sv

Сообщение Спасибо!
Поставил ваш код в строке:
Selection.AutoFill Destination:=ActiveCell.Range(«a») выдает ошибку

Мне надо что бы формулы рассчитывались по всему списку, не зависимо от того сколько строк в С1 (так как таблицы каждый раз разные может быть 2 строки а может за пару сотен) Автор — farafonov_sv
Дата добавления — 25.11.2011 в 12:15

Jhonson Дата: Пятница, 25.11.2011, 12:22 | Сообщение № 4
«Ничто не приносит людям столько неприятностей, как разум.»

Ответить

_Boroda_ Дата: Пятница, 25.11.2011, 12:24 | Сообщение № 5

Ответить

farafonov_sv Дата: Пятница, 25.11.2011, 12:42 | Сообщение № 6
farafonov_sv Дата: Понедельник, 28.11.2011, 12:20 | Сообщение № 7

Подскажите пож. что означает:
Метод Select из класса Range завершен не верно.
Добавил в ваш код эту строку:

Sheets(«Стоимости»).Select
Range(«E13»).Select
Selection.FormulaR1C1 = «=SUM(Расчеты!C[1])»

Подскажите пож. что означает:
Метод Select из класса Range завершен не верно.
Добавил в ваш код эту строку:

Sheets(«Стоимости»).Select
Range(«E13»).Select
Selection.FormulaR1C1 = «=SUM(Расчеты!C[1])» farafonov_sv

Сообщение Подскажите пож. что означает:
Метод Select из класса Range завершен не верно.
Добавил в ваш код эту строку:

Sheets(«Стоимости»).Select
Range(«E13»).Select
Selection.FormulaR1C1 = «=SUM(Расчеты!C[1])» Автор — farafonov_sv
Дата добавления — 28.11.2011 в 12:20

farafonov_sv Дата: Понедельник, 28.11.2011, 14:12 | Сообщение № 8
farafonov_sv Дата: Понедельник, 28.11.2011, 15:41 | Сообщение № 9
_Boroda_ Дата: Понедельник, 28.11.2011, 18:06 | Сообщение № 10

Не совсем понял, но, может, так?

Для нового файла кнопку нужно скопировать из этого и вставить в новый. Или создать свою новую и назвать ее CommandButton1. Или назвать новую как захочется, но в макросе написать Private Sub CommandButton1 _Click() вместо синего свое название

Перед макросами, на самом верху, есть строка Option Explicit — убейте ее
или второй строкой макроса допишите Dim r_
Private Sub CommandButton1_Click()
Dim r_
With Лист1

I. r_ = .Range(«c» & Rows.Count).End(xlUp).Row
1) Rows.Count — кол-во строк на листе (различно для 2003 и 2007/2010)
2) Range(«c» & Rows.Count) — виртуально «встаем» в ячейку C1048576
3) Range(«c» & Rows.Count).End(xlUp) — якобы жмем Ctrl+стрелка вверх
4) r_ = .Range(«c» & Rows.Count).End(xlUp).Row — присваеваем переменной r_ номер строки, в которой выделена ячейка 3).

II. Лист3.Range(«e» & r_ + 1 & «:G» & r_ + 1).FormulaR1C1 = «=SUM(R[-» & r_ — 1 & «]C:R[-1]C)» — в столбцы E-G строку r_ (см. п. I.) пишем формулу =СУММ(то, что выше)

Не совсем понял, но, может, так?

Для нового файла кнопку нужно скопировать из этого и вставить в новый. Или создать свою новую и назвать ее CommandButton1. Или назвать новую как захочется, но в макросе написать Private Sub CommandButton1 _Click() вместо синего свое название

Перед макросами, на самом верху, есть строка Option Explicit — убейте ее
или второй строкой макроса допишите Dim r_
Private Sub CommandButton1_Click()
Dim r_
With Лист1

I. r_ = .Range(«c» & Rows.Count).End(xlUp).Row
1) Rows.Count — кол-во строк на листе (различно для 2003 и 2007/2010)
2) Range(«c» & Rows.Count) — виртуально «встаем» в ячейку C1048576
3) Range(«c» & Rows.Count).End(xlUp) — якобы жмем Ctrl+стрелка вверх
4) r_ = .Range(«c» & Rows.Count).End(xlUp).Row — присваеваем переменной r_ номер строки, в которой выделена ячейка 3).

II. Лист3.Range(«e» & r_ + 1 & «:G» & r_ + 1).FormulaR1C1 = «=SUM(R[-» & r_ — 1 & «]C:R[-1]C)» — в столбцы E-G строку r_ (см. п. I.) пишем формулу =СУММ(то, что выше) _Boroda_

Скажи мне, кудесник, любимец ба’гов.
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Ответить

Сообщение Не совсем понял, но, может, так?

Для нового файла кнопку нужно скопировать из этого и вставить в новый. Или создать свою новую и назвать ее CommandButton1. Или назвать новую как захочется, но в макросе написать Private Sub CommandButton1 _Click() вместо синего свое название

Перед макросами, на самом верху, есть строка Option Explicit — убейте ее
или второй строкой макроса допишите Dim r_
Private Sub CommandButton1_Click()
Dim r_
With Лист1

I. r_ = .Range(«c» & Rows.Count).End(xlUp).Row
1) Rows.Count — кол-во строк на листе (различно для 2003 и 2007/2010)
2) Range(«c» & Rows.Count) — виртуально «встаем» в ячейку C1048576
3) Range(«c» & Rows.Count).End(xlUp) — якобы жмем Ctrl+стрелка вверх
4) r_ = .Range(«c» & Rows.Count).End(xlUp).Row — присваеваем переменной r_ номер строки, в которой выделена ячейка 3).

II. Лист3.Range(«e» & r_ + 1 & «:G» & r_ + 1).FormulaR1C1 = «=SUM(R[-» & r_ — 1 & «]C:R[-1]C)» — в столбцы E-G строку r_ (см. п. I.) пишем формулу =СУММ(то, что выше) Автор — _Boroda_
Дата добавления — 28.11.2011 в 18:06

farafonov_sv Дата: Вторник, 29.11.2011, 13:52 | Сообщение № 11

Да то что надо.
Спасибо Вам огромное!
Подскажите пож. а в приложении №1 как то можно что бы он в конце каждого столбца ставил Итого?

подскажите пож. как этот код перенести в другую таблицу?
Сделал все зеркально в чистой книге, пишет ошибку

Пишет: Compile error:
Variable not defined

Private Sub CommandButton3_Click() выделяет желтым
r_ = — выделяет синим

Да то что надо.
Спасибо Вам огромное!
Подскажите пож. а в приложении №1 как то можно что бы он в конце каждого столбца ставил Итого?

подскажите пож. как этот код перенести в другую таблицу?
Сделал все зеркально в чистой книге, пишет ошибку

Пишет: Compile error:
Variable not defined

Private Sub CommandButton3_Click() выделяет желтым
r_ = — выделяет синим farafonov_sv

Сообщение Да то что надо.
Спасибо Вам огромное!
Подскажите пож. а в приложении №1 как то можно что бы он в конце каждого столбца ставил Итого?

подскажите пож. как этот код перенести в другую таблицу?
Сделал все зеркально в чистой книге, пишет ошибку

Пишет: Compile error:
Variable not defined

Private Sub CommandButton3_Click() выделяет желтым
r_ = — выделяет синим Автор — farafonov_sv
Дата добавления — 29.11.2011 в 13:52

Источник

Adblock
detector

Формулировка задачи:

всем доброго времени суток
Уважаемые профи,подскажите,пожалуйста, такой вопрос: в ячейке С1 имеется формула =ТЕКСТ($D1;»ДД.ММ.ГГГГ ч:мм:сс»)
надо протянуть ее до последней заполненной ячейки по столбцу D . Соответственно в ячейке С2 будет формула =ТЕКСТ($D2;»ДД.ММ.ГГГГ ч:мм:сс») и тд
подскажите как это реализовать в vba(тк буду добавлять в макрос)
Спасибо большое

Код к задаче: «Vba протянуть формулу по столбцу С до последней ячейки по столбцу D»

textual

Sub val11()
   lLastRowD = Cells(Rows.Count, "D").End(xlUp).Row
   If lLastRowD > 1 Then Range("C1:C1").AutoFill Destination:=Range("C1:C" & lLastRowD), Type:=xlFillDefault
End Sub

Полезно ли:

11   голосов , оценка 4.273 из 5

Понравилась статья? Поделить с друзьями:
  • Vba excel пространство имен
  • Vba excel пропустить ошибку
  • Vba excel пропуск ошибок
  • Vba excel прокрутка листа
  • Vba excel пройти по всем строкам в листе