Вопрос: Как сохранить значение переменной? | Добавлено: 13.03.08 18:42 |
Автор вопроса: ![]() |
Как сделать чтобы значение переменной из процедуры в процедуру не терялось. В смысле вот так: пользователь записал число в ячейку. В Private Sub Worksheet_Change() я считал ячейку и присвоил в переменную q. В декларашене Public q as integer. Потом через некоторое время, не закрывая окна, пользователь допустим опять поменял значение в той ячейке. И в Private Sub Worksheet_Change() опять считывается значение. Так вот как сравнить ту старую q с новым значением ячейки. При этом я не юзаю контрлов и в ячейку какую-нибудь тоже не надо записывать q. Т.е. как сохранить в памяти q во времени, пока открыто таблица. |
Ответы | Всего ответов: 21 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 13.03.08 18:53 |
____ А почему нельзя сравнивать прямо в Private Sub Worksheet_Change()? Пока она не записана в q. |
Номер ответа: 2 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 13 |
Профиль | Цитата | #2 | Добавлено: 13.03.08 19:06 |
Она там и должна сравниваться. Потом в зависимости от старого и нового значения делаются изменения на листе. И только потом новое значение ячейки присваивается q. И это q уже будет старым в следующий раз, когда пользователь вновь внесет изменения. Но когда процедура начинается q уже пустой, а присвоенное значение теряется и получается что нет старого значения q, а только пользовательская ячейка. Надеюсь понятно объяснил. Если что вот
Public q as integer Private Sub Worksheet_Change() if q>cells(3.3) then то-то else то-то q=cells(3.3) end sub |
Номер ответа: 3 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 13 |
Профиль | Цитата | #3 | Добавлено: 13.03.08 19:09 |
ну т.е. не cells(3.3), а Worksheet("Лист1"![]() |
Номер ответа: 4 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 13 |
Профиль | Цитата | #4 | Добавлено: 13.03.08 19:49 |
Все работает. Excel попеременно тупит при отладке. После ошибок иногда не воспринимает изменения. Sorry за тупой вопрос. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 13.03.08 20:20 |
____ Всё правильно. Надо после некоторых изменений в коде надо сохранять файл и снова его перезапускать. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #6 | Добавлено: 14.03.08 16:33 |
избавится от глобальной переменной можно так:
Private Sub Worksheet_Change() static q as integerif q>cells(3.3) then то-то else то-то q=cells(3.3) end sub |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #7 | Добавлено: 15.03.08 00:35 |
2 ADSemenov.ru
Нафига ты столько черточек рисуешь? И так ведь понятно что написано! |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 15.03.08 00:49 |
____ Дурная привычка — никак не могу избавиться. А есть способ 4-5 пробелов зафигачить перед абзацем? |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #9 | Добавлено: 15.03.08 00:54 |
? |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #10 | Добавлено: 15.03.08 00:56 |
а не, фильтрует ![]() ![]() |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 15.03.08 08:50 |
Способ, может быть, и есть. Но очень сильно напрягает. Иногда использую на других форумах, где меня за эти "чёрточки" "приговаривают" к предупреждению с формулировкой "за форматирование абзацев" (таких форумов из полуторы сотен нашлась парочка). ![]() Так что, прям и не знаю, что делать — пальцы так и лезут в эти "чёрточки". ![]() |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 15.03.08 17:38 |
Абзацы можно разделять пустой строкой. За это у нас еще не расстреливают.
|
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 15.03.08 18:21 |
Разговор идёт не об отделении абзацев друг от друга, а об оформлении абзаца. В терминах CSS это соответствует text-indent. Мне нравится оформлять текст, как это принято в художественной литературе.
Но стандарт HTML в большинстве браузеров не "пропускает" подряд идущие пробелы и преобразует их в один. Можно это обойти, как я это сделал сейчас, но проще "настукать" несколько "чёрточек". ![]() |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #14 | Добавлено: 15.03.08 18:30 |
Отступы в абзацах делаются, чтобы визуально отделить конец одного
абзаца от начала другого. А черточки - это очень убого смотрится. |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #15 | Добавлено: 15.03.08 19:05 |
2 ADSemenov.ru
Почитай Лебедева - в интернете использование text-indent является плохим вкусом, а уже тем более text-indent вместе с отступом между абзацами - вообще моветон |
|