Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставка формул макросом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка формул макросом (Макросы/Sub)
Вставка формул макросом
Zoor Дата: Пятница, 03.02.2017, 14:34 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте. Сделал нынче такой вот макрос, чтоб не прописывать каждый раз формулы
[vba]
Код
Sub Макрос11()
'
' Макрос11
'

'
    ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-2],[111.xlsx]Лист1!C1:C3,2,0)"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]-RC[-1]"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-4],[111.xlsx]Лист1!C1:C3,3,0)"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "10438"
    Range("C2:E2").Select
    Selection.AutoFill Destination:=Range("C2:E" & Cells(Rows.Count, 1).End(xlUp).Row)
    Range("F2").Select
    Selection.AutoFill Destination:=Range("F2:F" & Cells(Rows.Count, 1).End(xlUp).Row)
End Sub
[/vba]

Дома у меня работает все ок.( офис 2013)
На работе 2010 офис выдает ошибку. method range fsailed. забыл как точно(
И выделяется желтым строка с
[vba]
Код
Selection.AutoFill Destination:=Range("C2:E" & Cells(Rows.Count, 1).End(xlUp).Row)
[/vba]
Подскажите что может быть?


Сообщение отредактировал Zoor - Пятница, 03.02.2017, 14:35
 
Ответить
СообщениеЗдравствуйте. Сделал нынче такой вот макрос, чтоб не прописывать каждый раз формулы
[vba]
Код
Sub Макрос11()
'
' Макрос11
'

'
    ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-2],[111.xlsx]Лист1!C1:C3,2,0)"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]-RC[-1]"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-4],[111.xlsx]Лист1!C1:C3,3,0)"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "10438"
    Range("C2:E2").Select
    Selection.AutoFill Destination:=Range("C2:E" & Cells(Rows.Count, 1).End(xlUp).Row)
    Range("F2").Select
    Selection.AutoFill Destination:=Range("F2:F" & Cells(Rows.Count, 1).End(xlUp).Row)
End Sub
[/vba]

Дома у меня работает все ок.( офис 2013)
На работе 2010 офис выдает ошибку. method range fsailed. забыл как точно(
И выделяется желтым строка с
[vba]
Код
Selection.AutoFill Destination:=Range("C2:E" & Cells(Rows.Count, 1).End(xlUp).Row)
[/vba]
Подскажите что может быть?

Автор - Zoor
Дата добавления - 03.02.2017 в 14:34
_Boroda_ Дата: Пятница, 03.02.2017, 14:52 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А не вставляете ли Вы случайно формулы в файл .xls?
Не .xlsx, xlsb, xlsm, а именно в старый формат файла


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА не вставляете ли Вы случайно формулы в файл .xls?
Не .xlsx, xlsb, xlsm, а именно в старый формат файла

Автор - _Boroda_
Дата добавления - 03.02.2017 в 14:52
Zoor Дата: Пятница, 03.02.2017, 16:14 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
случайно нет
 
Ответить
Сообщениеслучайно нет

Автор - Zoor
Дата добавления - 03.02.2017 в 16:14
Manyasha Дата: Пятница, 03.02.2017, 16:19 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Zoor, покажите файл, в котором возникает ошибка.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеZoor, покажите файл, в котором возникает ошибка.

Автор - Manyasha
Дата добавления - 03.02.2017 в 16:19
Wasilich Дата: Пятница, 03.02.2017, 16:21 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
На всякий случай
[vba]
Код
Cells(Rows.Count, 1).End(xlUp).Row)
[/vba]Определяет последнюю заполненную ячейку столбца 1, ну или А. Там есть данные?
 
Ответить
СообщениеНа всякий случай
[vba]
Код
Cells(Rows.Count, 1).End(xlUp).Row)
[/vba]Определяет последнюю заполненную ячейку столбца 1, ну или А. Там есть данные?

Автор - Wasilich
Дата добавления - 03.02.2017 в 16:21
Zoor Дата: Пятница, 03.02.2017, 16:36 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Определяет последнюю заполненную ячейку столбца 1, ну или А. Там есть данные?

ессно. для этого я и добавил. кста если просто указа диапазон C2:E100 к примеру, то макрос работает. но кол-во строк всегда разное. и куча формул с #знач. очень не нравиться начальству:)

Zoor, покажите файл, в котором возникает ошибка.

не могу скачать. т ккак все заблочено айтишнегами


Сообщение отредактировал Zoor - Пятница, 03.02.2017, 16:41
 
Ответить
Сообщение
Определяет последнюю заполненную ячейку столбца 1, ну или А. Там есть данные?

ессно. для этого я и добавил. кста если просто указа диапазон C2:E100 к примеру, то макрос работает. но кол-во строк всегда разное. и куча формул с #знач. очень не нравиться начальству:)

Zoor, покажите файл, в котором возникает ошибка.

не могу скачать. т ккак все заблочено айтишнегами

Автор - Zoor
Дата добавления - 03.02.2017 в 16:36
Kamikadze_N Дата: Пятница, 03.02.2017, 16:48 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Zoor, всмысле заблокировано, а как тогда вы его дома запускаете?
 
Ответить
СообщениеZoor, всмысле заблокировано, а как тогда вы его дома запускаете?

Автор - Kamikadze_N
Дата добавления - 03.02.2017 в 16:48
Zoor Дата: Пятница, 03.02.2017, 16:52 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
создал файлик. записал макрос. запустил. както так..
все идентично, кроме путей к файлам)


Сообщение отредактировал Zoor - Пятница, 03.02.2017, 16:54
 
Ответить
Сообщениесоздал файлик. записал макрос. запустил. както так..
все идентично, кроме путей к файлам)

Автор - Zoor
Дата добавления - 03.02.2017 в 16:52
Wasilich Дата: Пятница, 03.02.2017, 17:09 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
если просто указа диапазон C2:E100 к примеру, то макрос работает.
Попробуйте через переменную. [vba]
Код
S=Cells(Rows.Count, 1).End(xlUp).Row
[/vba] и далее
[vba]
Код
=Range("C2:E" & S)
[/vba]
 
Ответить
Сообщение
если просто указа диапазон C2:E100 к примеру, то макрос работает.
Попробуйте через переменную. [vba]
Код
S=Cells(Rows.Count, 1).End(xlUp).Row
[/vba] и далее
[vba]
Код
=Range("C2:E" & S)
[/vba]

Автор - Wasilich
Дата добавления - 03.02.2017 в 17:09
Zoor Дата: Суббота, 04.02.2017, 14:25 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
S=Cells(Rows.Count, 1).End(xlUp).Row

сделал( опять же дома все ок.
на работе выдает application-defined or object definded error
и выделяет

[vba]
Код
s = Cells(Rows.Count, 1).End(xlUp).Row
[/vba]


Сообщение отредактировал Zoor - Суббота, 04.02.2017, 14:29
 
Ответить
Сообщение
S=Cells(Rows.Count, 1).End(xlUp).Row

сделал( опять же дома все ок.
на работе выдает application-defined or object definded error
и выделяет

[vba]
Код
s = Cells(Rows.Count, 1).End(xlUp).Row
[/vba]

Автор - Zoor
Дата добавления - 04.02.2017 в 14:25
Manyasha Дата: Суббота, 04.02.2017, 14:47 | Сообщение № 11
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Zoor, покажите файл, в котором возникает ошибка.

С домашнего компьютера-то можете файл загрузить? Или попробуйте сохранить без поддержки макросов и приложить к посту.
У меня все работает. Без Вашего файла остается только гадать.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
Zoor, покажите файл, в котором возникает ошибка.

С домашнего компьютера-то можете файл загрузить? Или попробуйте сохранить без поддержки макросов и приложить к посту.
У меня все работает. Без Вашего файла остается только гадать.

Автор - Manyasha
Дата добавления - 04.02.2017 в 14:47
Zoor Дата: Четверг, 23.02.2017, 21:05 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Еле скачал файл. и опять же у меня макрос работает. на работе нет...
К сообщению приложен файл: 11655-10.02.201.xls (89.0 Kb)
 
Ответить
СообщениеЕле скачал файл. и опять же у меня макрос работает. на работе нет...

Автор - Zoor
Дата добавления - 23.02.2017 в 21:05
Alex_ST Дата: Четверг, 23.02.2017, 23:27 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Ну, ввиду наличия отсутствия у меня на компе файла D:\xpps\05 Offene Fertigungsauftraege X1.xls, да ещё и на Excel-2003 проверить работу Вашего макроса затруднительно…
Но попробуйте всё-таки в своём макросе не использовать обращение к диапазонам активного листа по умолчанию, а всё-таки указывать имя листа, на который Вы хотите добавить формулы.
Т.е. просто заключите все процедуры в With Worksheets("SCANNER") .... End With а вместо Range напишите .Range , вместо Rows .Rows , вместо Cells .Cells и т.п.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Четверг, 23.02.2017, 23:28
 
Ответить
СообщениеНу, ввиду наличия отсутствия у меня на компе файла D:\xpps\05 Offene Fertigungsauftraege X1.xls, да ещё и на Excel-2003 проверить работу Вашего макроса затруднительно…
Но попробуйте всё-таки в своём макросе не использовать обращение к диапазонам активного листа по умолчанию, а всё-таки указывать имя листа, на который Вы хотите добавить формулы.
Т.е. просто заключите все процедуры в With Worksheets("SCANNER") .... End With а вместо Range напишите .Range , вместо Rows .Rows , вместо Cells .Cells и т.п.

Автор - Alex_ST
Дата добавления - 23.02.2017 в 23:27
Zoor Дата: Вторник, 28.02.2017, 02:05 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
если так
[vba]
Код
With Range("C2:E" & Cells(Rows.Count, 2).End(xlUp).Row)
    .Rows(1).AutoFill Destination:=.Cells
End With
[/vba]
опять выдает application-defined or object definded error
 
Ответить
Сообщениеесли так
[vba]
Код
With Range("C2:E" & Cells(Rows.Count, 2).End(xlUp).Row)
    .Rows(1).AutoFill Destination:=.Cells
End With
[/vba]
опять выдает application-defined or object definded error

Автор - Zoor
Дата добавления - 28.02.2017 в 02:05
bmv98rus Дата: Вторник, 28.02.2017, 07:54 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Zoor,
Вы можете посмотреть в отладчике или любым образом другим что выдает
[vba]
Код
xlUp  'должно быть -4162 https://msdn.microsoft.com/en-us/library/office/ff820880.aspx
',
Rows.Count
' и
Cells(Rows.Count, 2).End(xlUp).Row
[/vba]?
В целом похоже на сбой Excel


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 28.02.2017, 08:03
 
Ответить
СообщениеZoor,
Вы можете посмотреть в отладчике или любым образом другим что выдает
[vba]
Код
xlUp  'должно быть -4162 https://msdn.microsoft.com/en-us/library/office/ff820880.aspx
',
Rows.Count
' и
Cells(Rows.Count, 2).End(xlUp).Row
[/vba]?
В целом похоже на сбой Excel

Автор - bmv98rus
Дата добавления - 28.02.2017 в 07:54
Gustav Дата: Вторник, 28.02.2017, 08:44 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2738
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Rows.Count

Поддерживаю. Надо посмотреть в момент ошибки в Окне отладки что выдает оператор:
[vba]
Код
? Rows.Count
[/vba]
65536 или 1048576? Если вдруг второе (большее), то всё, думаю, ясно: файл-то - старого формата XLS, c 65536 строками.

P.S. И в сообщении №1 (на работе?) в коде указан файл типа XLSX, а в сообщении №12 (дома?) - файл типа XLS. Возможно, в момент доступа к XSLX и происходит перескок Rows.Count с 65536 на 1048576. Но это всё пока мои домыслы - проверяйте-проверяйте! :)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 28.02.2017, 08:50
 
Ответить
Сообщение
Rows.Count

Поддерживаю. Надо посмотреть в момент ошибки в Окне отладки что выдает оператор:
[vba]
Код
? Rows.Count
[/vba]
65536 или 1048576? Если вдруг второе (большее), то всё, думаю, ясно: файл-то - старого формата XLS, c 65536 строками.

P.S. И в сообщении №1 (на работе?) в коде указан файл типа XLSX, а в сообщении №12 (дома?) - файл типа XLS. Возможно, в момент доступа к XSLX и происходит перескок Rows.Count с 65536 на 1048576. Но это всё пока мои домыслы - проверяйте-проверяйте! :)

Автор - Gustav
Дата добавления - 28.02.2017 в 08:44
_Boroda_ Дата: Вторник, 28.02.2017, 09:08 | Сообщение № 17
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вот-вот, именно про это я и писал во втором посте
А не вставляете ли Вы случайно формулы в файл .xls?

Периодически случается такое. Если строк с данными в файле меньше 65536 (по идее так и должно быть, иначе Вы не смогли бы работать в xls), то обычно помогает замена вот этого
[vba]
Код
Cells(Rows.Count, 1).End(xlUp).Row
[/vba]
на вот это
[vba]
Код
Cells(65500, 1).End(xlUp).Row
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВот-вот, именно про это я и писал во втором посте
А не вставляете ли Вы случайно формулы в файл .xls?

Периодически случается такое. Если строк с данными в файле меньше 65536 (по идее так и должно быть, иначе Вы не смогли бы работать в xls), то обычно помогает замена вот этого
[vba]
Код
Cells(Rows.Count, 1).End(xlUp).Row
[/vba]
на вот это
[vba]
Код
Cells(65500, 1).End(xlUp).Row
[/vba]

Автор - _Boroda_
Дата добавления - 28.02.2017 в 09:08
bmv98rus Дата: Вторник, 28.02.2017, 09:21 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Ну и для данного конкретного случая можно использовать
[vba]
Код
Range("a1").End(xlDown).row
[/vba]
вроде пропусков там не придвидится.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 28.02.2017, 09:23
 
Ответить
СообщениеНу и для данного конкретного случая можно использовать
[vba]
Код
Range("a1").End(xlDown).row
[/vba]
вроде пропусков там не придвидится.

Автор - bmv98rus
Дата добавления - 28.02.2017 в 09:21
Zoor Дата: Четверг, 02.03.2017, 11:20 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
создал файл в .хlsm и та же петрушка

Вы можете посмотреть в отладчике или любым образом другим что выдает
xlUp  'должно быть -4162 https://msdn.microsoft.com/en-us/library/office/ff820880.aspx
',
Rows.Count
' и
Cells(Rows.Count, 2).End(xlUp).Row

не совсем понял как это посмотреть
 
Ответить
Сообщениесоздал файл в .хlsm и та же петрушка

Вы можете посмотреть в отладчике или любым образом другим что выдает
xlUp  'должно быть -4162 https://msdn.microsoft.com/en-us/library/office/ff820880.aspx
',
Rows.Count
' и
Cells(Rows.Count, 2).End(xlUp).Row

не совсем понял как это посмотреть

Автор - Zoor
Дата добавления - 02.03.2017 в 11:20
Gustav Дата: Четверг, 02.03.2017, 11:28 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2738
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Да вбейте уже константу 65500 и забудьте! :)
обычно помогает замена вот этого
Cells(Rows.Count, 1).End(xlUp).Row
на вот это
Cells(65500, 1).End(xlUp).Row


P.S. А Rows.Count надо смотреть во время выполнения (отладки) в Окне отладки в редакторе Visual Basic (Alt+F11, Ctrl+G).


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Четверг, 02.03.2017, 11:32
 
Ответить
СообщениеДа вбейте уже константу 65500 и забудьте! :)
обычно помогает замена вот этого
Cells(Rows.Count, 1).End(xlUp).Row
на вот это
Cells(65500, 1).End(xlUp).Row


P.S. А Rows.Count надо смотреть во время выполнения (отладки) в Окне отладки в редакторе Visual Basic (Alt+F11, Ctrl+G).

Автор - Gustav
Дата добавления - 02.03.2017 в 11:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка формул макросом (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!