Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вставка формул макросом, находясь на другом листе книги / 13 сообщений из 13, страница 1 из 1
04.01.2013, 17:39
    #38100142
Агент
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Всех поздравляю с Новым годом!
Ребята.
Как изменить данный макрос, чтобы он вставлял формулы только на конкретном листе?
То есть. Запускаем иакрос кнопкой «пуск», расположенной на Лист1. А формулы вставляем в закрашенные ячейки на листе «Итог».
Подмогните, плиз!
...
Рейтинг: 0 / 0
04.01.2013, 17:43
    #38100151
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Агентизменить данный макрос, чтобы он вставлял формулы только на конкретном листе?
Очевидно, что надо указать этот лист :)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub Суммаесли()
' Вставить Суммаесли Макросом
    With Sheets("Итог").Range("E2:E" & Cells(Rows.Count, 1).End(xlUp).Row)
.FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C11)"
    End With
    With Sheets("Итог").Range("F2:F" & Cells(Rows.Count, 1).End(xlUp).Row)
.FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C8)"
    End With
End Sub
...
Рейтинг: 0 / 0
04.01.2013, 18:09
    #38100177
Агент
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
СПАСИБО, работает.
Но, проявляется следующая, нежеланная особенность.
Когда запускаю макрос находясь на самом листе "Итог", то формулі вставляются во все закрашенные ячейки. А с Лист1 - заполняются только по пятую строку.
...
Рейтинг: 0 / 0
04.01.2013, 18:13
    #38100184
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Муля, я рад)
А что надо-то?
...
Рейтинг: 0 / 0
04.01.2013, 18:28
    #38100191
Агент
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Serge 007,тоже вас приветсьвую!
Это я докумекал сам.
А еще бы мне, нужно как то изменить саму структуру макроса.
Чтобы несколько раз не писать \ With Sheets("Итог").Range и так далее ...End With. Поскольку нужно задествовать в работу еще 2 столбца.
...
Рейтинг: 0 / 0
04.01.2013, 18:36
    #38100196
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
И чё?
Агентнесколько раз не писать \ With Sheets("Итог").Range и так далее
Это оптимально, что надо-то? Чтоб Экс мысли читал? Такого пока не будет...
...
Рейтинг: 0 / 0
05.01.2013, 13:06
    #38100477
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Сергей немного неверно привел макрос - последняя строка явно будет вычислена для текущего листа. Правильнее примерно так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Sub Суммаесли()
' Вставить Суммаесли Макросом
With Sheets("Итог")
    .Range("E2:E" & .Cells(.Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C11)"
    .Range("F2:F" & .Cells(.Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C8)"
End With
End Sub



не проверял, писал сразу в форум.
...
Рейтинг: 0 / 0
05.01.2013, 14:53
    #38100550
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
The_PristСергей немного неверно привел макрос
Тебе виднее :)
The_Pristпоследняя строка явно будет вычислена для текущего листа.
Можешь пояснить?
...
Рейтинг: 0 / 0
05.01.2013, 16:24
    #38100585
Агент
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Приветствую и поздравляю всех с праздниками!
Ув. The_Prist, СПАСИБО!
Макрос работает как часы.
И позвольте задать маленький попутный вопросик.
Если я правильно понимаю, сейчас "мерилоМ" или "ориентиром", до какой именно строки макрос вставляет формулы, является заполненость первого столбца.
И, собсьвенно, вопрос.
А если у меня в рабочем файле первый столбец не заполняется даными, как поменять "ориентир" на любой другой, заполненый столбец?
...
Рейтинг: 0 / 0
05.01.2013, 19:12
    #38100684
Агент
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Отбой!
Разобрался, с проблемой.
Еще раз СПАСИБО за помощь!
...
Рейтинг: 0 / 0
06.01.2013, 10:33
    #38100867
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Serge 007Можешь пояснить?
Попробую пояснить.
По умолчанию для всех объектов родительским объектом является текущий объект(если он может быть использован в качестве родителя). Т.е. если для ячейки не указать явно лист, к которому она относится, в качестве родительского листа для неё будет использован текущий(за исключением случаев, когда код записан в модуле листа - тогда в качестве родителя будет использован лист, в котором записан код). В конструкциях типа Range(Cells(,),Cells(,)) Range является контейнером, в котором указываются ссылки на объекты, из которых и будет создана ссылка на непосредственно конечный объект.
Предположим, что активен "Лист1", а код запущен с листа "Итог".
Если запись будет вида
Код: vbnet
1.
Sheets("Итог").Range(Cells(1,1),Cells(10,1))


это вызовет ошибку(контейнер и объекты внутри него не могут располагаться на разных листах), равно как и
Код: vbnet
1.
Sheets("Итог").Range(Cells(1,1),Sheets("Итог").Cells(10,1))


и
Код: vbnet
1.
Range(Cells(1, 1), Sheets("Итог").Cells(10, 1))


т.к. ссылки на объекты внутри контейнера относятся к разным листам.
А вот такие записи будут правильными:
Код: vbnet
1.
2.
Sheets("Итог").Range(Sheets("Итог").Cells(1,1),Sheets("Итог").Cells(10,1))
Range(Sheets("Итог").Cells(1,1),Sheets("Итог").Cells(10,1))


Вторая запись не содержит ссылки на родителя для Range, но ошибки это не вызовет - т.к. если для контейнера ссылка не указана, а для двух объектов внутри контейнера родитель один - он будет применен и для самого контейнера.
Если запись будет вида Range("A1","A10"), то указывать ссылку на родителя внутри Range не обязательно - достаточно будет указать эту ссылку перед самим Range - Sheets("Итог").Range("A1","A10"), т.к. текстовое представление адреса внутри Range обязывает создать ссылку именно на родителя контейнера.

В примере Serge 007:
Код: vbnet
1.
2.
3.
With Sheets("Итог").Range("E2:E" & Cells(Rows.Count, 1).End(xlUp).Row)
    .FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C11)"
End With


Запись смешанная - и текстовое представление адреса ячейки и ссылка на объект Cells. В данном случае явную ошибку код не вызовет, но и работает не всегда так, как хотелось бы.
Sheets("Итог").Range("E2:E" - создается ссылка на столбец Е листа Итог. Но далее идет вычисление последней строки первого столбца. И вот как раз это вычисление происходит на основе объекта Cells, который не содержит в себе ссылки на родительский объект. А значит он будет вычислять последнюю строку исключительно для текущего листа(если код записан в стандартном модуле). Правильно было бы записать тогда так:
Код: vbnet
1.
2.
3.
With Sheets("Итог").Range("E2:E" & Sheets("Итог").Cells(Rows.Count, 1).End(xlUp).Row)
    .FormulaR1C1 = "=SUMIF(Лист1!C4,RC1,Лист1!C11)"
End With



Надеюсь, что мне удалось дать достаточно развернутый и доступный для понимания ответ.
...
Рейтинг: 0 / 0
06.01.2013, 13:06
    #38100920
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Да, Дим, спасибо
Всё по полочкам
...
Рейтинг: 0 / 0
07.01.2013, 23:22
    #38101827
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка формул макросом, находясь на другом листе книги
Агент...Макрос работает как часы...
Время что ли показывает?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вставка формул макросом, находясь на другом листе книги / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]