Доброго времени суток, форумчане! Столкнулся с такой интересной штукой. Собираю я значит файлик в Excel, пишу себе тихонько макросы, все вроде хорошо и все работает, тут понадобилось сделать макрос реагирующий на изменения в ячейке, тоже сделал, при этом написал функцию, назвал ее Ulica. И не поверите вроде разобрался с первого раза, результат устраивает, сижу, пишу дальше, тут понадобилось написать другую функцию и оп, ошибка. Искал, рыл, переделывал, ни чего не помогало, пока я ей не дал название Ulica1, и теперь я не могу называть функции ни как иначе как Ulica с разными цифрами, так как это всегда приводит к одной и той же ошибке Sub or Function not defined. Что я не так сделал, почему такая ерунда. В каком направлении искать? Заранее премного благодарен!
Доброго времени суток, форумчане! Столкнулся с такой интересной штукой. Собираю я значит файлик в Excel, пишу себе тихонько макросы, все вроде хорошо и все работает, тут понадобилось сделать макрос реагирующий на изменения в ячейке, тоже сделал, при этом написал функцию, назвал ее Ulica. И не поверите вроде разобрался с первого раза, результат устраивает, сижу, пишу дальше, тут понадобилось написать другую функцию и оп, ошибка. Искал, рыл, переделывал, ни чего не помогало, пока я ей не дал название Ulica1, и теперь я не могу называть функции ни как иначе как Ulica с разными цифрами, так как это всегда приводит к одной и той же ошибке Sub or Function not defined. Что я не так сделал, почему такая ерунда. В каком направлении искать? Заранее премного благодарен!Бубенчик
Я тута новичок
Сообщение отредактировал Бубенчик - Воскресенье, 03.02.2019, 08:14
Pelena, названия функций которые вызывали ошибку были разные и RazbitFIO и AdresSlitno и sceplyaem и многое другое, в любом случае я уверен, что точно не идентичные стандартным
Pelena, названия функций которые вызывали ошибку были разные и RazbitFIO и AdresSlitno и sceplyaem и многое другое, в любом случае я уверен, что точно не идентичные стандартнымБубенчик
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 с разными номерамиБубенчик
Nic70y, это укороченный вариант функции, которая была написана мной в отдельном модуле, тело функции не стал писать в полном объеме, так как уверен, что это ни как не относится к сути вопроса
Nic70y, это укороченный вариант функции, которая была написана мной в отдельном модуле, тело функции не стал писать в полном объеме, так как уверен, что это ни как не относится к сути вопросаБубенчик
Я тута новичок
Сообщение отредактировал Бубенчик - Воскресенье, 03.02.2019, 22:41
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
Ребята, сам файл скинуть будет затруднительно, я же думал, чего тупить и пошел писать дальше и функций на делал, правда просто в комментариях написан описание функции, а так они у меня все так и идут Ulica1, Ulica2, Ulica3 и т.д. сам файл то уже большой, там уже чем его править, легче выписать ошибку отдельно, я на днях попробую, скину
Ребята, сам файл скинуть будет затруднительно, я же думал, чего тупить и пошел писать дальше и функций на делал, правда просто в комментариях написан описание функции, а так они у меня все так и идут Ulica1, Ulica2, Ulica3 и т.д. сам файл то уже большой, там уже чем его править, легче выписать ошибку отдельно, я на днях попробую, скинуБубенчик
Дорогие Администраторы, можно тему закрывать, сам не знаю что такое было, то ли я глюканул, то ли Excel но сегодня с утра сел готовить файлик, что бы скинуть сюда, и о чудо!!! Называю функции как хочу (одну даже Жопой назвал со злости) и они работают как надо. С причиной конечно же не разобрался, но теперь все работает. Извиняюсь за беспокойство, огромное спасибо тем, кто отзывался, успехов в творчестве!
Дорогие Администраторы, можно тему закрывать, сам не знаю что такое было, то ли я глюканул, то ли Excel но сегодня с утра сел готовить файлик, что бы скинуть сюда, и о чудо!!! Называю функции как хочу (одну даже Жопой назвал со злости) и они работают как надо. С причиной конечно же не разобрался, но теперь все работает. Извиняюсь за беспокойство, огромное спасибо тем, кто отзывался, успехов в творчестве!Бубенчик