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

Вход

Регистрация

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

 

= Мир MS Excel/Не получается назвать пользовательскую функцию - Мир MS Excel

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

Excel 2016
Доброго времени суток, форумчане!
Столкнулся с такой интересной штукой. Собираю я значит файлик в Excel, пишу себе тихонько макросы, все вроде хорошо и все работает, тут понадобилось сделать макрос реагирующий на изменения в ячейке, тоже сделал, при этом написал функцию, назвал ее Ulica. И не поверите вроде разобрался с первого раза, результат устраивает, сижу, пишу дальше, тут понадобилось написать другую функцию и оп, ошибка. Искал, рыл, переделывал, ни чего не помогало, пока я ей не дал название Ulica1, и теперь я не могу называть функции ни как иначе как Ulica с разными цифрами, так как это всегда приводит к одной и той же ошибке Sub or Function not defined. Что я не так сделал, почему такая ерунда. В каком направлении искать? Заранее премного благодарен!


Я тута новичок

Сообщение отредактировал Бубенчик - Воскресенье, 03.02.2019, 08:14
 
Ответить
СообщениеДоброго времени суток, форумчане!
Столкнулся с такой интересной штукой. Собираю я значит файлик в Excel, пишу себе тихонько макросы, все вроде хорошо и все работает, тут понадобилось сделать макрос реагирующий на изменения в ячейке, тоже сделал, при этом написал функцию, назвал ее Ulica. И не поверите вроде разобрался с первого раза, результат устраивает, сижу, пишу дальше, тут понадобилось написать другую функцию и оп, ошибка. Искал, рыл, переделывал, ни чего не помогало, пока я ей не дал название Ulica1, и теперь я не могу называть функции ни как иначе как Ulica с разными цифрами, так как это всегда приводит к одной и той же ошибке Sub or Function not defined. Что я не так сделал, почему такая ерунда. В каком направлении искать? Заранее премного благодарен!

Автор - Бубенчик
Дата добавления - 03.02.2019 в 07:41
Pelena Дата: Воскресенье, 03.02.2019, 07:59 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Бубенчик, дайте теме более конкретное название, отражающее суть вопроса, в соответствии с Правилами форума. Исправлено

Приведите примеры названий функций, которые вызывали ошибку


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеБубенчик, дайте теме более конкретное название, отражающее суть вопроса, в соответствии с Правилами форума. Исправлено

Приведите примеры названий функций, которые вызывали ошибку

Автор - Pelena
Дата добавления - 03.02.2019 в 07:59
Бубенчик Дата: Воскресенье, 03.02.2019, 15:45 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, названия функций которые вызывали ошибку были разные и RazbitFIO и AdresSlitno и sceplyaem и многое другое, в любом случае я уверен, что точно не идентичные стандартным


Я тута новичок
 
Ответить
СообщениеPelena, названия функций которые вызывали ошибку были разные и RazbitFIO и AdresSlitno и sceplyaem и многое другое, в любом случае я уверен, что точно не идентичные стандартным

Автор - Бубенчик
Дата добавления - 03.02.2019 в 15:45
Pelena Дата: Воскресенье, 03.02.2019, 19:02 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Цитата Бубенчик, 03.02.2019 в 07:41, в сообщении № 1 ()
макрос реагирующий на изменения в ячейке
не может называться Ulica

В общем, надо смотреть макросы, желательно в файле с примером


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Цитата Бубенчик, 03.02.2019 в 07:41, в сообщении № 1 ()
макрос реагирующий на изменения в ячейке
не может называться Ulica

В общем, надо смотреть макросы, желательно в файле с примером

Автор - Pelena
Дата добавления - 03.02.2019 в 19:02
Бубенчик Дата: Воскресенье, 03.02.2019, 20:59 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, Большое спасибо за внимание и помощь, но видимо я неправильно выразился Ulica это не название макроса реагирующего на изменения в ячейке, а это название функции, которая запускается при изменении в ячейке, а код выглядит примерно так:
Нажимаем Лист1 правой кнопкой и выбираем исходный код, там я написал такое
[vba]
Код

If Target.Address = "$S$13" Then         'Если изменилась ячейка S13
                    'Ячейка S13 имеет имя "НазваниеУлицы"   
      N = Range("НазваниеУлицы")        'В переменную N записываем значение из этой ячейки
      Ul = Ulica(N)                    'Ul это переменная, в которую записывается результат
                    'Который возвращает функция с именем Ulica
                    'N мы передаем в функцию
      Range("Результат") = Ul                'В ячейку "Результат" записываем то, что вернула функция
[/vba]
Далее обычном модуле я написал такое
Тут в общем я убираю тело функции, оно ни как не влияет я уверен, оставляю начало и конец
[vba]
Код

'Тут название улицы, принимает значение в переменную, возвращает переменную String
Function Ulica(NazUl As String) As String
    
    Ulica = "ул."   'В данном случае Функция возвращает "ул."
End Function
[/vba]
в общем после этого если я снова делаю новый модуль и пишу там какое либо название оно не знаю даже как назвать,не воспринимается, следующую функцию можно назвать только Ulica с разными номерами


Я тута новичок
 
Ответить
СообщениеPelena, Большое спасибо за внимание и помощь, но видимо я неправильно выразился Ulica это не название макроса реагирующего на изменения в ячейке, а это название функции, которая запускается при изменении в ячейке, а код выглядит примерно так:
Нажимаем Лист1 правой кнопкой и выбираем исходный код, там я написал такое
[vba]
Код

If Target.Address = "$S$13" Then         'Если изменилась ячейка S13
                    'Ячейка S13 имеет имя "НазваниеУлицы"   
      N = Range("НазваниеУлицы")        'В переменную N записываем значение из этой ячейки
      Ul = Ulica(N)                    'Ul это переменная, в которую записывается результат
                    'Который возвращает функция с именем Ulica
                    'N мы передаем в функцию
      Range("Результат") = Ul                'В ячейку "Результат" записываем то, что вернула функция
[/vba]
Далее обычном модуле я написал такое
Тут в общем я убираю тело функции, оно ни как не влияет я уверен, оставляю начало и конец
[vba]
Код

'Тут название улицы, принимает значение в переменную, возвращает переменную String
Function Ulica(NazUl As String) As String
    
    Ulica = "ул."   'В данном случае Функция возвращает "ул."
End Function
[/vba]
в общем после этого если я снова делаю новый модуль и пишу там какое либо название оно не знаю даже как назвать,не воспринимается, следующую функцию можно назвать только Ulica с разными номерами

Автор - Бубенчик
Дата добавления - 03.02.2019 в 20:59
Nic70y Дата: Воскресенье, 03.02.2019, 22:20 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2272 ±
Замечаний: 0% ±

Excel 2010
Цитата Бубенчик, 03.02.2019 в 20:59, в сообщении № 5 ()
Function Ulica(NazUl As String) As String

Ulica = "ул."   'В данном случае Функция возвращает "ул."
End Function
во/ат из ит? %)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Воскресенье, 03.02.2019, 22:20
 
Ответить
Сообщение
Цитата Бубенчик, 03.02.2019 в 20:59, в сообщении № 5 ()
Function Ulica(NazUl As String) As String

Ulica = "ул."   'В данном случае Функция возвращает "ул."
End Function
во/ат из ит? %)

Автор - Nic70y
Дата добавления - 03.02.2019 в 22:20
Бубенчик Дата: Воскресенье, 03.02.2019, 22:38 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Nic70y, это укороченный вариант функции, которая была написана мной в отдельном модуле, тело функции не стал писать в полном объеме, так как уверен, что это ни как не относится к сути вопроса


Я тута новичок

Сообщение отредактировал Бубенчик - Воскресенье, 03.02.2019, 22:41
 
Ответить
СообщениеNic70y, это укороченный вариант функции, которая была написана мной в отдельном модуле, тело функции не стал писать в полном объеме, так как уверен, что это ни как не относится к сути вопроса

Автор - Бубенчик
Дата добавления - 03.02.2019 в 22:38
bmv98rus Дата: Воскресенье, 03.02.2019, 23:24 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Бубенчик, Приведите полный пример, а то так и будут люди гадать что там у вас удалено. Может как раз в эти строках дело.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеБубенчик, Приведите полный пример, а то так и будут люди гадать что там у вас удалено. Может как раз в эти строках дело.

Автор - bmv98rus
Дата добавления - 03.02.2019 в 23:24
Бубенчик Дата: Понедельник, 04.02.2019, 01:12 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, Ну что ж, сейчас попробую еще подробнее.
И так Лист1, просмотреть код, там написано
[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
Dim N As String
Dim Ul As String
If Target.Address = "$S$13" Then         'Если изменилась S13
      N = Range("НазваниеУлицы")        'Берем название улицы
      Ul = Ulica(N)                    'Отправляем в функцию Ulica
      Range("Результат") = Ul                'Результат в "Результат"
End If
End Sub
[/vba]
Далее в обычном модуле написано
[vba]
Код

' Функция просто возвращает приставку "ул." при определенных условиях
Function Ulica(NazUl As String) As String
    Dim N
    For N = 14 To Cells.SpecialCells(xlLastCell).Row '14 номер строки, с которой начинается поиск
    If Cells(N, 19) = NazUl Then 'Столбец, в котором производится поиск
        Exit For
    End If
Next N
If (CStr(N) < 120) Then
    Ulica = "ул."
Else
    Ulica = ""
End If
End Function
[/vba]
И тут все ясно вроде и понятно, и на самом деле все прекрасно работает, но если я вернусь в Лист1, просмотреть код
и добавлю туда еще одну функцию, которая должна выполнять вообще другие задачи, например так
[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
Dim N As String
Dim Ul As String
Dim DL As Long
If Target.Address = "$S$13" Then         'Если изменилась S13
      N = Range("НазваниеУлицы")        'Берем название улицы
      Ul = Ulica(N)                    'Отправляем в функцию Ulica
      Range("Результат") = Ul                'Результат в "Результат"
End If
If Target.Address = "$Q$13" Then         'Если изменилась Q13
      N = Range("НазваниеУлицы")        'Берем название улицы
'-------------Вот тут начинается проблема
'Другую функцию я не могу назвать ни как иначе как Ulica1 или Ulica2
'То есть могу менять только цифру после названия
      DL = DlinnaNazvaniya(N)                'название функции DlinnaNazvaniya приниматься не будет
      Range("Результат2") = DL               'Результат в "Результат2"
End If
End Sub
[/vba]


Я тута новичок
 
Ответить
Сообщениеbmv98rus, Ну что ж, сейчас попробую еще подробнее.
И так Лист1, просмотреть код, там написано
[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
Dim N As String
Dim Ul As String
If Target.Address = "$S$13" Then         'Если изменилась S13
      N = Range("НазваниеУлицы")        'Берем название улицы
      Ul = Ulica(N)                    'Отправляем в функцию Ulica
      Range("Результат") = Ul                'Результат в "Результат"
End If
End Sub
[/vba]
Далее в обычном модуле написано
[vba]
Код

' Функция просто возвращает приставку "ул." при определенных условиях
Function Ulica(NazUl As String) As String
    Dim N
    For N = 14 To Cells.SpecialCells(xlLastCell).Row '14 номер строки, с которой начинается поиск
    If Cells(N, 19) = NazUl Then 'Столбец, в котором производится поиск
        Exit For
    End If
Next N
If (CStr(N) < 120) Then
    Ulica = "ул."
Else
    Ulica = ""
End If
End Function
[/vba]
И тут все ясно вроде и понятно, и на самом деле все прекрасно работает, но если я вернусь в Лист1, просмотреть код
и добавлю туда еще одну функцию, которая должна выполнять вообще другие задачи, например так
[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
Dim N As String
Dim Ul As String
Dim DL As Long
If Target.Address = "$S$13" Then         'Если изменилась S13
      N = Range("НазваниеУлицы")        'Берем название улицы
      Ul = Ulica(N)                    'Отправляем в функцию Ulica
      Range("Результат") = Ul                'Результат в "Результат"
End If
If Target.Address = "$Q$13" Then         'Если изменилась Q13
      N = Range("НазваниеУлицы")        'Берем название улицы
'-------------Вот тут начинается проблема
'Другую функцию я не могу назвать ни как иначе как Ulica1 или Ulica2
'То есть могу менять только цифру после названия
      DL = DlinnaNazvaniya(N)                'название функции DlinnaNazvaniya приниматься не будет
      Range("Результат2") = DL               'Результат в "Результат2"
End If
End Sub
[/vba]

Автор - Бубенчик
Дата добавления - 04.02.2019 в 01:12
vikttur Дата: Понедельник, 04.02.2019, 01:32 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Цитата
название функции DlinnaNazvaniya приниматься не будет

Покажите файл с ошибкой


Сообщение отредактировал vikttur - Понедельник, 04.02.2019, 01:35
 
Ответить
Сообщение
Цитата
название функции DlinnaNazvaniya приниматься не будет

Покажите файл с ошибкой

Автор - vikttur
Дата добавления - 04.02.2019 в 01:32
Бубенчик Дата: Понедельник, 04.02.2019, 02:08 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Ребята, сам файл скинуть будет затруднительно, я же думал, чего тупить и пошел писать дальше и функций на делал, правда просто в комментариях написан описание функции, а так они у меня все так и идут Ulica1, Ulica2, Ulica3 и т.д. сам файл то уже большой, там уже чем его править, легче выписать ошибку отдельно, я на днях попробую, скину


Я тута новичок
 
Ответить
СообщениеРебята, сам файл скинуть будет затруднительно, я же думал, чего тупить и пошел писать дальше и функций на делал, правда просто в комментариях написан описание функции, а так они у меня все так и идут Ulica1, Ulica2, Ulica3 и т.д. сам файл то уже большой, там уже чем его править, легче выписать ошибку отдельно, я на днях попробую, скину

Автор - Бубенчик
Дата добавления - 04.02.2019 в 02:08
Бубенчик Дата: Вторник, 05.02.2019, 10:16 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Дорогие Администраторы, можно тему закрывать, сам не знаю что такое было, то ли я глюканул, то ли Excel но сегодня с утра сел готовить файлик, что бы скинуть сюда, и о чудо!!! Называю функции как хочу (одну даже Жопой назвал со злости) и они работают как надо. С причиной конечно же не разобрался, но теперь все работает. Извиняюсь за беспокойство, огромное спасибо тем, кто отзывался, успехов в творчестве!


Я тута новичок
 
Ответить
СообщениеДорогие Администраторы, можно тему закрывать, сам не знаю что такое было, то ли я глюканул, то ли Excel но сегодня с утра сел готовить файлик, что бы скинуть сюда, и о чудо!!! Называю функции как хочу (одну даже Жопой назвал со злости) и они работают как надо. С причиной конечно же не разобрался, но теперь все работает. Извиняюсь за беспокойство, огромное спасибо тем, кто отзывался, успехов в творчестве!

Автор - Бубенчик
Дата добавления - 05.02.2019 в 10:16
Бубенчик Дата: Понедельник, 25.02.2019, 18:37 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
У меня новый вопрос, больше к админам, а где сделать тему, если мне надо посоветоваться не конкретно по коду, а по логике решения задачи?


Я тута новичок
 
Ответить
СообщениеУ меня новый вопрос, больше к админам, а где сделать тему, если мне надо посоветоваться не конкретно по коду, а по логике решения задачи?

Автор - Бубенчик
Дата добавления - 25.02.2019 в 18:37
Pelena Дата: Понедельник, 25.02.2019, 18:52 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Если задача по Excel или VBA, то в соответствующей ветке, в других случаях - в Неформальном общении


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЕсли задача по Excel или VBA, то в соответствующей ветке, в других случаях - в Неформальном общении

Автор - Pelena
Дата добавления - 25.02.2019 в 18:52
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не получается назвать пользовательскую функцию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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