Доброго времени. Подскажите пожалуйста, правильно ли я объявляю глобальные переменные и вызываю их. Задумка такова. У мня много однотипных кодов и правом надоело их копировать и вставлять. Подсказали мне про глобальные переменные, до этого понятия не имела. Смысл какой: - объявляю переменную, а под ней могу иметь ввиду именованый диапазон(в примере), расчет формульный, сравнение. и все это описываю в отдельный макросах. Проблема в том, что по переменной я их не могу вызвать почему то , постоянно надо заходить в модуль и запускать их. Решение в примере сделала следующим образом [vba]
Код
call (имя макроса)
[/vba] Но ведь это наверное не правильно? Подскажите как правильно объявить переменную в корой будет проходить расчет, но в форму в инициализацию будет записана только переменная а не весь код. Или я все в корне не верно понимаю.
Доброго времени. Подскажите пожалуйста, правильно ли я объявляю глобальные переменные и вызываю их. Задумка такова. У мня много однотипных кодов и правом надоело их копировать и вставлять. Подсказали мне про глобальные переменные, до этого понятия не имела. Смысл какой: - объявляю переменную, а под ней могу иметь ввиду именованый диапазон(в примере), расчет формульный, сравнение. и все это описываю в отдельный макросах. Проблема в том, что по переменной я их не могу вызвать почему то , постоянно надо заходить в модуль и запускать их. Решение в примере сделала следующим образом [vba]
Код
call (имя макроса)
[/vba] Но ведь это наверное не правильно? Подскажите как правильно объявить переменную в корой будет проходить расчет, но в форму в инициализацию будет записана только переменная а не весь код. Или я все в корне не верно понимаю.Olena
Olena, любую переменную, тем более объектную, нужно инициализировать. Сделать это можно как при каждом открытии формы, (как у Вас) так и единожды, при открытии файла например [vba]
Код
Private Sub Workbook_Open() Set ASD = [ZIC] End Sub
[/vba] Тут правда могут быть проблемы с аварийным завершением по END.
Olena, любую переменную, тем более объектную, нужно инициализировать. Сделать это можно как при каждом открытии формы, (как у Вас) так и единожды, при открытии файла например [vba]
Код
Private Sub Workbook_Open() Set ASD = [ZIC] End Sub
[/vba] Тут правда могут быть проблемы с аварийным завершением по END.Апострофф
могут быть проблемы с аварийным завершением по END
Имеется ввиду если выполнится с ошибкой, то нужно перезапускать файл? Я читала что если объявить переменную в модуле [vba]
Код
Publik ASD as Range
[/vba], то переменная как бі считывается при старте и помниться до самого закрытия файла. Вот этого и хочу добиться. Хотя я могла не так все понятьOlena
Olena, из примера не совсем понятен смысл заведения переменной ASD. Именованный диапазон ZIC существует сам по себе, его не надо как-то специально инициализировать - открыл книгу, его содержащую, и пользуйся на здоровье в любом месте проекта: [vba]
Код
ComboBox1.List = [ZIC].Value
[/vba] Согласен, с таким синтаксисом не очень удобно оперировать - нельзя программно менять адресацию. Но есть же гораздо более комфортная форма с использованием имени диапазона в виде текста, вместо которого можно подставлять какую-нибудь текстовую переменную с релевантным содержанием: [vba]
Так что пример пока не рулит. Вы приведите пример с использованием глобальной переменной в разных аспектах/контекстах. Хотя бы в двух: в виде ссылки на диапазон, как сейчас, и еще какой-нибудь другой смысл придайте (например, расчет формульный, как Вы говорите).
Olena, из примера не совсем понятен смысл заведения переменной ASD. Именованный диапазон ZIC существует сам по себе, его не надо как-то специально инициализировать - открыл книгу, его содержащую, и пользуйся на здоровье в любом месте проекта: [vba]
Код
ComboBox1.List = [ZIC].Value
[/vba] Согласен, с таким синтаксисом не очень удобно оперировать - нельзя программно менять адресацию. Но есть же гораздо более комфортная форма с использованием имени диапазона в виде текста, вместо которого можно подставлять какую-нибудь текстовую переменную с релевантным содержанием: [vba]
Так что пример пока не рулит. Вы приведите пример с использованием глобальной переменной в разных аспектах/контекстах. Хотя бы в двух: в виде ссылки на диапазон, как сейчас, и еще какой-нибудь другой смысл придайте (например, расчет формульный, как Вы говорите).Gustav
dim LRow as Long a=textbox1 b=textbox2 LRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 cells(LRow ,12).value=x
[/vba] т.е. у меня в больших случаях есть умножение, вычитание, и все эти расчеты я писала раньше в текстбоксах, но это не красиво. Буквально вот на днях, решила перемножить значения колонок листбокса и у меня получилось, но как вот с переменными такими быть. Что бы они всегда "висели" в памяти. Конечно я могу и пользую уже обращение к Sub, работает, но правильно ли это, думаю нет.
Спасибо большое за консультацию По поводу [vba]
Код
ComboBox1.List = [ZIC].Value
[/vba] именно так и пишу), а в примере через переменную указала для простоты объяснения)
dim LRow as Long a=textbox1 b=textbox2 LRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 cells(LRow ,12).value=x
[/vba] т.е. у меня в больших случаях есть умножение, вычитание, и все эти расчеты я писала раньше в текстбоксах, но это не красиво. Буквально вот на днях, решила перемножить значения колонок листбокса и у меня получилось, но как вот с переменными такими быть. Что бы они всегда "висели" в памяти. Конечно я могу и пользую уже обращение к Sub, работает, но правильно ли это, думаю нет.Olena
Функция берет данные, обрабатывает их и ВОЗВРАЩАЕТ значение Возвращенное значение - это то, что Вы видите в ячейке, в результате работы функцииSerge_007