powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обращение функции к другому листу Экселя
5 сообщений из 5, страница 1 из 1
Обращение функции к другому листу Экселя
    #37291081
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал функцию, но она не принимает (игнорирует) активацию нужного листа.
Если делаю прямую ссылку на лист (типа "s = Нормы!Cells(i, 3)...."), то просто функция выкидывается.
Подскажите, плз, что делаю не так?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function СуммПроизведения() 
col = ActiveCell.Column
For i =  3  To  75 
       Sheets("Нормы").Activate
            s = Cells(i,  3 ) * Cells(i, col)
            s1 = s1 + s
             Next i
        Sheets("Цена").Select
    ActiveCell.FormulaR1C1 = s1
End Function
Спасибо

Stepler (щёлк-щёлк!!)

Код: plaintext
 P.S.Чтобы наступила смерть - необходима жизненная сила !!!  
...
Рейтинг: 0 / 0
Обращение функции к другому листу Экселя
    #37292138
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SteplerЕсли делаю прямую ссылку на лист (типа "s = Нормы!Cells(i, 3)...."), то просто функция выкидывается.
Подскажите, плз, что делаю не так?
Нет такого объекта как Нормы. Можете поставить брейк и посмотреть Locals Window в момент исполнения.
...
Рейтинг: 0 / 0
Обращение функции к другому листу Экселя
    #37292801
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

не совсем понял, Почему в макросе тот же код проходит, а в функции игнорируется??? Ведь функция "сумм()" работает с другими листами и книгами....
Может кто подскажет, где можно посмотреть коды стандартных функций....
...
Рейтинг: 0 / 0
Обращение функции к другому листу Экселя
    #37293098
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stepler,

Неверный синтаксис: s = Нормы!Cells(i, 3)....
Если хотите обратиться к диапазону на другом листе делайте либо так:
Код: plaintext
s = Worksheets("Нормы").Cells(i,  3 )
либо так:
Код: plaintext
s = Range("Нормы!C" & i)

А если пытаетесь вызвать функцию пользователя с листа, то нельзя пытаться изменить другие объекты(лист, диапазон) - функции листа этого делать не могут. Вам в Вашей функции необходимо убрать активацию листов и изменение активной ячейки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Function СуммПроизведения()
    Dim i As Long, col As Long    'не забываем объявлять переменные
    col = Application.Caller.Column    'это более точное определение столбца ячейки с функцией
    With Sheets("Нормы")
        For i =  3  To  75 
            s = .Cells(i,  3 ) * .Cells(i, col)
            s1 = s1 + s
        Next i
    End With
    'ActiveCell.FormulaR1C1 = s1'НЕЛЬЗЯ ТАК ДЕЛАТЬ!!!ЭТО ФУНКЦИЯ
    СуммПроизведения = s1
End Function

Еще почитайте эту статью . Может поймете более точно как создавать функции.
...
Рейтинг: 0 / 0
Обращение функции к другому листу Экселя
    #37293881
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

Да, я согласен с Вами и благодарен за замечания... ( правда "col = Application.Caller.Column " не проходит) а вообще работает!
Проблем в другом - копирую из этой книги листР, в котором есть ссылка на ячейку с вышеуказанной функцией (листА). При работе макроса копирования листаР при вставке этого листаР в другую книгу идет запрос функции, а функция почему-то не срабатывает, пока её не активируешь входом в ячейку. В результате на итоговом скопированном листе значение функции "#знач!".
Что делать!?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обращение функции к другому листу Экселя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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