Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: Как сохранить значение переменной? Добавлено: 13.03.08 18:42  

Автор вопроса:  Зеленый
Как сделать чтобы значение переменной из процедуры в процедуру не терялось. В смысле вот так: пользователь записал число в ячейку. В Private Sub Worksheet_Change() я считал ячейку и присвоил в переменную q. В декларашене Public q as integer. Потом через некоторое время, не закрывая окна, пользователь допустим опять поменял значение в той ячейке. И в Private Sub Worksheet_Change() опять считывается значение. Так вот как сравнить ту старую q с новым значением ячейки. При этом я не юзаю контрлов и в ячейку какую-нибудь тоже не надо записывать q. Т.е. как сохранить в памяти q во времени, пока открыто таблица.

Ответить

  Ответы Всего ответов: 21  

Номер ответа: 1
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #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";).cells(3,3).value

Ответить

Номер ответа: 4
Автор ответа:
 Зеленый



Вопросов: 7
Ответов: 13
 Профиль | | #4 Добавлено: 13.03.08 19:49
Все работает. Excel попеременно тупит при отладке. После ошибок иногда не воспринимает изменения. Sorry за тупой вопрос.

Ответить

Номер ответа: 5
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #5
Добавлено: 13.03.08 20:20
____ Всё правильно. Надо после некоторых изменений в коде надо сохранять файл и снова его перезапускать.

Ответить

Номер ответа: 6
Автор ответа:
 HACKER


 

Разработчик 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
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 15.03.08 00:35
2 ADSemenov.ru
Нафига ты столько черточек рисуешь? И так ведь понятно что написано!

Ответить

Номер ответа: 8
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #8
Добавлено: 15.03.08 00:49
____ Дурная привычка — никак не могу избавиться. А есть способ 4-5 пробелов зафигачить перед абзацем?

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 15.03.08 00:54
 ?

Ответить

Номер ответа: 10
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 15.03.08 00:56
а не, фильтрует :)) Ну тогда можно вспомнить в каких случаях следует писать с абзаца, а в каких нет :)

Ответить

Номер ответа: 11
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #11
Добавлено: 15.03.08 08:50
    Способ, может быть, и есть. Но очень сильно напрягает. Иногда использую на других форумах, где меня за эти "чёрточки" "приговаривают" к предупреждению с формулировкой "за форматирование абзацев" (таких форумов из полуторы сотен нашлась парочка). :)
    Так что, прям и не знаю, что делать — пальцы так и лезут в эти "чёрточки". :-)

Ответить

Номер ответа: 12
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #12
Добавлено: 15.03.08 17:38
Абзацы можно разделять пустой строкой. За это у нас еще не расстреливают.

Ответить

Номер ответа: 13
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #13
Добавлено: 15.03.08 18:21
      Разговор идёт не об отделении абзацев друг от друга, а об оформлении абзаца. В терминах CSS это соответствует text-indent. Мне нравится оформлять текст, как это принято в художественной литературе.

      Но стандарт HTML в большинстве браузеров не "пропускает" подряд идущие пробелы и преобразует их в один. Можно это обойти, как я это сделал сейчас, но проще "настукать" несколько "чёрточек". :)

Ответить

Номер ответа: 14
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #14
Добавлено: 15.03.08 18:30
Отступы в абзацах делаются, чтобы визуально отделить конец одного
абзаца от начала другого.

А черточки - это очень убого смотрится.

Ответить

Номер ответа: 15
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #15 Добавлено: 15.03.08 19:05
2 ADSemenov.ru
Почитай Лебедева - в интернете использование text-indent является плохим вкусом, а уже тем более text-indent вместе с отступом между абзацами - вообще моветон

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам