|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.03.2011, 13:37 | #1 |
Регистрация: 13.03.2011
Сообщений: 3
|
Глобальная переменная = 0 в Worksheet_SelectionChange
Excel 2003. в Модуле1 объявлена глобальная переменная
Public qqq As Byte и в дальнейшем ей присвоено значение(например 7). В модуле Листа1 следующий код: Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) MsgBox (qqq) End Sub При переводе курсора на другую ячейку появляется сообщение "7", т.е. всё работает. Но как только я вставляю на лист activeX-кнопку Set cb = Worksheets(1).OLEObjects.Add(ClassT ype:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=500, Top:=400, Width:=110, Height:=40), при выборе другой ячейки появляется сообщение "0". Где теряется значение глобальной переменной qqq? Помогите плиз ) |
13.03.2011, 14:15 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Подробностей не знаю - просто читал об это где-то на форумах. Короче, считайте это глюком (или особенностью) Excel. Как побороть - придумайте сами. Или откажитесь от добавления кнопок, или избавляйтесь от глобальных переменных (они редко нужны, я их в коде почти никогда не использую) |
|
13.03.2011, 14:22 | #3 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
а когда (и где) qqq получает значение 7?
вы добавили код в проект. переменные обнулились. обьявите Public Const qqq as byte = 7
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
14.03.2011, 14:24 | #4 |
Регистрация: 13.03.2011
Сообщений: 3
|
Значение qqq присваивается в модуле формы(при запуске, в самом начале) в зависимости от того, что выбрал пользователь. Что интересно, до первого ручного изменения положения курсора qqq везде = 7, но стоит раз вручную нажать на любую ячейку на листе, и qqq = 0. Судя по всему это действительно глюк Excel, будем избавляться от глобальных переменных, спасибо !
|
14.03.2011, 14:31 | #5 |
Участник клуба
Регистрация: 16.05.2010
Сообщений: 1,249
|
Я когда-то так и не добился, почему Игорь (EducatedFool) не любит глобальных переменных
Сейчас вижу одну из причин. Есть еще? |
14.03.2011, 14:46 | #6 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Виктор,не угадал.
Обнуляются все переменные,массивы,Static и ...........
Анализ,обработка данных Недорого
|
14.03.2011, 14:54 | #7 |
Участник клуба
Регистрация: 16.05.2010
Сообщений: 1,249
|
|
14.03.2011, 14:54 | #8 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Больше, наверное, нет. Всё остальное - ИМХО, дело вкуса.
Я не использую глобальные переменные, поскольку обычно пишу сложные макросы, состоящие из десятков функций. Если бы я вместо функций применял процедуры, храня промежуточные результаты в глобальных переменных, - часто бы путался в коде. Да и в основном я собираю программу как конструктор - из отдельных блоков-функций (свой сайт я создал как раз для хранения этих функций - как в записной книжке). Сейчас я просто закидываю кучу функций в отдельный модуль, и вызываю функции по необходимости, получая от них результат их работы. А если бы это были процедуры, записывающие результаты в глобальные переменные, - мне бы ещё пришлось добавлять кучу строк кода (с этими переменными), и в ходе работы над проектом помнить, в какой переменной что хранится. Да ещё и область видимости переменных учитывать... |
14.03.2011, 15:03 | #9 |
Участник клуба
Регистрация: 16.05.2010
Сообщений: 1,249
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Глобальная переменная | mutabor | JavaScript, Ajax | 2 | 31.12.2010 12:23 |
C++ [Глобальная переменная] | Lemo | Помощь студентам | 2 | 26.10.2009 17:49 |
Глобальная переменная для одной формы bcb 2k9 | xLoMMx | Общие вопросы C/C++ | 2 | 16.09.2009 22:20 |
Глобальная переменная в проектном файле. | Nikolaeva | Общие вопросы Delphi | 8 | 23.04.2009 12:31 |