powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вставка формул макросом, находясь на другом листе книги
13 сообщений из 13, страница 1 из 1
Вставка формул макросом, находясь на другом листе книги
    #38100142
Агент
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех поздравляю с Новым годом!
Ребята.
Как изменить данный макрос, чтобы он вставлял формулы только на конкретном листе?
То есть. Запускаем иакрос кнопкой «пуск», расположенной на Лист1. А формулы вставляем в закрашенные ячейки на листе «Итог».
Подмогните, плиз!
...
Рейтинг: 0 / 0
Вставка формул макросом, находясь на другом листе книги
    #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
Вставка формул макросом, находясь на другом листе книги
    #38100177
Агент
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО, работает.
Но, проявляется следующая, нежеланная особенность.
Когда запускаю макрос находясь на самом листе "Итог", то формулі вставляются во все закрашенные ячейки. А с Лист1 - заполняются только по пятую строку.
...
Рейтинг: 0 / 0
Вставка формул макросом, находясь на другом листе книги
    #38100184
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Муля, я рад)
А что надо-то?
...
Рейтинг: 0 / 0
Вставка формул макросом, находясь на другом листе книги
    #38100191
Агент
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serge 007,тоже вас приветсьвую!
Это я докумекал сам.
А еще бы мне, нужно как то изменить саму структуру макроса.
Чтобы несколько раз не писать \ With Sheets("Итог").Range и так далее ...End With. Поскольку нужно задествовать в работу еще 2 столбца.
...
Рейтинг: 0 / 0
Вставка формул макросом, находясь на другом листе книги
    #38100196
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чё?
Агентнесколько раз не писать \ With Sheets("Итог").Range и так далее
Это оптимально, что надо-то? Чтоб Экс мысли читал? Такого пока не будет...
...
Рейтинг: 0 / 0
Вставка формул макросом, находясь на другом листе книги
    #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
Вставка формул макросом, находясь на другом листе книги
    #38100550
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristСергей немного неверно привел макрос
Тебе виднее :)
The_Pristпоследняя строка явно будет вычислена для текущего листа.
Можешь пояснить?
...
Рейтинг: 0 / 0
Вставка формул макросом, находясь на другом листе книги
    #38100585
Агент
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую и поздравляю всех с праздниками!
Ув. The_Prist, СПАСИБО!
Макрос работает как часы.
И позвольте задать маленький попутный вопросик.
Если я правильно понимаю, сейчас "мерилоМ" или "ориентиром", до какой именно строки макрос вставляет формулы, является заполненость первого столбца.
И, собсьвенно, вопрос.
А если у меня в рабочем файле первый столбец не заполняется даными, как поменять "ориентир" на любой другой, заполненый столбец?
...
Рейтинг: 0 / 0
Вставка формул макросом, находясь на другом листе книги
    #38100684
Агент
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отбой!
Разобрался, с проблемой.
Еще раз СПАСИБО за помощь!
...
Рейтинг: 0 / 0
Вставка формул макросом, находясь на другом листе книги
    #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
Вставка формул макросом, находясь на другом листе книги
    #38100920
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, Дим, спасибо
Всё по полочкам
...
Рейтинг: 0 / 0
Вставка формул макросом, находясь на другом листе книги
    #38101827
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агент...Макрос работает как часы...
Время что ли показывает?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вставка формул макросом, находясь на другом листе книги
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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