изменение одной ячейки при изменении другой ("если"

Программирование на Visual Basic for Applications
grim
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 25.07.2005 (Пн) 9:33

изменение одной ячейки при изменении другой ("если"

Сообщение grim » 25.07.2005 (Пн) 9:38

есть ячейки - связанный с формой checkbox соотвественно надо чтобы в определенных случаях установка одних чекбоксов устраняла другие.
В ячейках соотвестенно только ложь или истина и надо условно говоря чтобы при появлении Истина в А2 устанавливалась ложь в А1 и наоборот

как это сделать в экселе, у самого очень маленький пока опыт на ВБА

и сразу второй вопрос - не по теме но очень интересно

есть ли в вба в синтаксисе аналоги {} в Cи или begin end в паскаль а то раздражает использовать GoTo

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.07.2005 (Пн) 10:11

1. Формула для A1: =НЕ(A2)
2. Уууууу..... Ыыыыыыы!!! Приведи пример, а то у меня неадекватная реакция будет.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 25.07.2005 (Пн) 11:13

Ну чувак, ты даешь...

Например в паскале цикл определяется так:

Код: Выделить всё
for i:=1 to 5 do
  begin
    //тело цикла
  end;


А в бейсике тоже самое:

Код: Выделить всё
for i=1 to 5
' тело цикла
next


И GOTO использовать не нужно - для выхода из цикла используется
Код: Выделить всё
Exit For
А я все практикую лечение травами...

grim
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 25.07.2005 (Пн) 9:33

Сообщение grim » 25.07.2005 (Пн) 13:22

1) повторяю - я не могу менять формулы для ячеек
они обе связаны с чекбоксами (которые формы-флажок) - поэтому их значения исключительно правда или ложь.
нужно какими-то иными средстами менять значения одной если меняется значение другой и наоборот
2)
пример легко
if (условие) then (блок операторов) else (блок операторов)

в бейсике как-нибудь этот блок отделять можно? или только вызывая отдельную процедуру.
С циклом то все понятно - там он заключен между for next а тут?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.07.2005 (Пн) 13:28

1. Обрабатывай worksheet_change. Если Target.address(false, false) равен A2 и если Target.Value = True, то Range("a1").value=false. Например.

2. RTFM. Большими красными буквами RTFM.
Код: Выделить всё
if условие then
  (блок операторов)
else
  (блок операторов)
end if
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 25.07.2005 (Пн) 13:31

в бейсике как-нибудь этот блок отделять можно? или только вызывая отдельную процедуру.

Или я не выспался с утра, или одно из двух!!! Не пойму что ты хочешь?
Как понять отделять блок? Или ты хочешь, чтобы между IF и ELSE был всего один оператор?Ни чего не понял... :?:
А я все практикую лечение травами...

grim
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 25.07.2005 (Пн) 9:33

Сообщение grim » 25.07.2005 (Пн) 14:00

спасибо большое
ну не знаю я басиковсского синтаксиса

ScorpionS
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.04.2006 (Пт) 12:29

Сообщение ScorpionS » 21.04.2006 (Пт) 18:08

Исходя из данного обсуждения мне не совсем понятно как мне реализовать похожую идею. Отнеситель с пониманием к "чайнику".

Я хочу, чтобы в Excel если я ввожу какое-либо (любое) значение в ячейку А1, то у меня должны очищаться ячейки A2 и A3, если я ввожу какое-либо (любое) значение в ячейку А2, то у меня должны очищаться ячейки A1 и A3, и если я ввожу какое-либо (любое) значение в ячейку А3, то у меня должны очищаться ячейки A1 и A2. Вроде все просто, но не могу сразу понять как это сделать. Помогите, plz!
Если не трудно, приведите пример кода.

P.S. И может кто подскажет, где скачать справку к VB на РУССКОМ языке?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.04.2006 (Пт) 18:26

ScorpionS, а может смотреть ответы в своих темах?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ScorpionS
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.04.2006 (Пт) 12:29

Сообщение ScorpionS » 21.04.2006 (Пт) 18:45

Так ты сам меня оттуда сюда переправил...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.04.2006 (Сб) 3:38

Да?..
Хм... да.

А, ну да. http://bbs.vbstreets.ru/viewtopic.php?p=138826#138826 - то, что надо было читать.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ScorpionS
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.04.2006 (Пт) 12:29

Сообщение ScorpionS » 22.04.2006 (Сб) 16:33

GSerg

...да, ...хм да, ...ну да,

дружище, лучше бы подсказал как делать.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.04.2006 (Сб) 16:40

1. Обрабатывай worksheet_change. Если Target.address(false, false) равен A2...

Не?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 18

    TopList