Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Включить vbOkCancel по условию. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Включить vbOkCancel по условию. (Макросы/Sub)
Включить vbOkCancel по условию.
Kinder Дата: Пятница, 27.11.2015, 19:03 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 0 ±
Замечаний: 0% ±

Добрый вечер.
Подскажите пожалуйста, можно ли указать чтоб при нажатии vbOk выполнялось Else. А при нажатии Cancel выполнялось Exit Sub
/[vba]
Код
If Bz.Range("D" & i) = Os.Range("E3")  Then
            MsgBox "!!!", vbOKCancel
            
            Else
            i = i + 1
            Bz.Range("A" & i) = Os.Range("B3")
End if
[/vba]

Или придется менять структуру.
Спасибо.


"И все таки она вертится!"
 
Ответить
СообщениеДобрый вечер.
Подскажите пожалуйста, можно ли указать чтоб при нажатии vbOk выполнялось Else. А при нажатии Cancel выполнялось Exit Sub
/[vba]
Код
If Bz.Range("D" & i) = Os.Range("E3")  Then
            MsgBox "!!!", vbOKCancel
            
            Else
            i = i + 1
            Bz.Range("A" & i) = Os.Range("B3")
End if
[/vba]

Или придется менять структуру.
Спасибо.

Автор - Kinder
Дата добавления - 27.11.2015 в 19:03
Manyasha Дата: Пятница, 27.11.2015, 19:07 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Kinder, попробуйте так
[vba]
Код
If Bz.Range("D" & i) = Os.Range("E3")  Then
            If MsgBox ("!!!", vbOKCancel) = vbOk then
                 i = i + 1
                Bz.Range("A" & i) = Os.Range("B3")
            Else
                Exit sub
            End if
End if
[/vba]
[p.s.]Не проверяла[/p.s.]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеKinder, попробуйте так
[vba]
Код
If Bz.Range("D" & i) = Os.Range("E3")  Then
            If MsgBox ("!!!", vbOKCancel) = vbOk then
                 i = i + 1
                Bz.Range("A" & i) = Os.Range("B3")
            Else
                Exit sub
            End if
End if
[/vba]
[p.s.]Не проверяла[/p.s.]

Автор - Manyasha
Дата добавления - 27.11.2015 в 19:07
Kinder Дата: Пятница, 27.11.2015, 19:34 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 0 ±
Замечаний: 0% ±

Спасибо большое за ответ!!!
Ваш код игнорирует 1-е условие, то есть если <>.
Да и я как всегда некорректно объяснил))
В моем коде, если 1-е условие ложь, выполняется Else.
Если ИСТИНА то выходит сообщение. Как сделать чтоб при нажатии vbOk все равно выполнилось Else.
В первоначальном коде было просто MsgBox "!!!"
Я попробовал добавить кнопки. Но не смог привязать кнопки к условию. Постоянно выдает всякие ошибки.
Спасибо.


"И все таки она вертится!"
 
Ответить
СообщениеСпасибо большое за ответ!!!
Ваш код игнорирует 1-е условие, то есть если <>.
Да и я как всегда некорректно объяснил))
В моем коде, если 1-е условие ложь, выполняется Else.
Если ИСТИНА то выходит сообщение. Как сделать чтоб при нажатии vbOk все равно выполнилось Else.
В первоначальном коде было просто MsgBox "!!!"
Я попробовал добавить кнопки. Но не смог привязать кнопки к условию. Постоянно выдает всякие ошибки.
Спасибо.

Автор - Kinder
Дата добавления - 27.11.2015 в 19:34
RAN Дата: Пятница, 27.11.2015, 19:42 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
MsgBox "!!!", vbOKCancel

формирует список условий по вашему выбору.
Manyasha, код для обработки привела.
Так почему вы это условие проверяете в другом месте? Там оно никогда не выполнится.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
MsgBox "!!!", vbOKCancel

формирует список условий по вашему выбору.
Manyasha, код для обработки привела.
Так почему вы это условие проверяете в другом месте? Там оно никогда не выполнится.

Автор - RAN
Дата добавления - 27.11.2015 в 19:42
Kinder Дата: Пятница, 27.11.2015, 19:56 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 0 ±
Замечаний: 0% ±

Благодарю за ответ.
Не совсем понял что вы имеете в виду RAN.

MsgBox "!!!", vbOKCancel
формирует список условий по вашему выбору.
Так почему вы это условие проверяете в другом месте? Там оно никогда не выполнится.


"И все таки она вертится!"
 
Ответить
СообщениеБлагодарю за ответ.
Не совсем понял что вы имеете в виду RAN.

MsgBox "!!!", vbOKCancel
формирует список условий по вашему выбору.
Так почему вы это условие проверяете в другом месте? Там оно никогда не выполнится.

Автор - Kinder
Дата добавления - 27.11.2015 в 19:56
Pelena Дата: Пятница, 27.11.2015, 20:04 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
[vba]
Код
If Bz.Range("D" & i) = Os.Range("E3")  Then
            If MsgBox ("!!!", vbOKCancel) = vbCancel Then Exit Sub
End If
i = i + 1
Bz.Range("A" & i) = Os.Range("B3")
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение[vba]
Код
If Bz.Range("D" & i) = Os.Range("E3")  Then
            If MsgBox ("!!!", vbOKCancel) = vbCancel Then Exit Sub
End If
i = i + 1
Bz.Range("A" & i) = Os.Range("B3")
[/vba]

Автор - Pelena
Дата добавления - 27.11.2015 в 20:04
Kinder Дата: Пятница, 27.11.2015, 20:13 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 0 ±
Замечаний: 0% ±

Благодарю за ответ.
Все работает.
1 вопросик: возможно ли привязать кнопку vbOk к Else без оператора If.
То есть как в моем варианте.
Спасибо.


"И все таки она вертится!"
 
Ответить
СообщениеБлагодарю за ответ.
Все работает.
1 вопросик: возможно ли привязать кнопку vbOk к Else без оператора If.
То есть как в моем варианте.
Спасибо.

Автор - Kinder
Дата добавления - 27.11.2015 в 20:13
RAN Дата: Пятница, 27.11.2015, 20:18 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Привязать можно. У вас привязано.
А если хотите что-либо найти, ищите там, где потеряли, а не там, где светло.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПривязать можно. У вас привязано.
А если хотите что-либо найти, ищите там, где потеряли, а не там, где светло.

Автор - RAN
Дата добавления - 27.11.2015 в 20:18
Pelena Дата: Пятница, 27.11.2015, 20:18 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Чтобы привязать кнопку ОК к чему-либо, надо узнать, была ли она нажата, для этого нужен оператор If


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЧтобы привязать кнопку ОК к чему-либо, надо узнать, была ли она нажата, для этого нужен оператор If

Автор - Pelena
Дата добавления - 27.11.2015 в 20:18
Kinder Дата: Пятница, 27.11.2015, 20:21 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 0 ±
Замечаний: 0% ±

Большое спасибо за ответы RAN & Pelena.


"И все таки она вертится!"
 
Ответить
СообщениеБольшое спасибо за ответы RAN & Pelena.

Автор - Kinder
Дата добавления - 27.11.2015 в 20:21
Kinder Дата: Пятница, 27.11.2015, 20:36 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 0 ±
Замечаний: 0% ±

Еще 1 вопрос.
Если в коде:
[vba]
Код
If Bz.Range("D" & i) = Os.Range("E3")  Then
            MsgBox "!!!", vbOKCancel
            
            Else
            i = i + 1
            Bz.Range("A" & i) = Os.Range("B3")
End if
[/vba]
после MsgBox "!!!", vbOkCancel дописать If MsgBox ("!!!" vbOkCancel) = vbOk Then, то получается что создается второй MsgBox.
Можно ли в операторе как то указать что это тот же самый MsgBox.
Хотел попробовать через переменную но не смог.
Спасибо.


"И все таки она вертится!"
 
Ответить
СообщениеЕще 1 вопрос.
Если в коде:
[vba]
Код
If Bz.Range("D" & i) = Os.Range("E3")  Then
            MsgBox "!!!", vbOKCancel
            
            Else
            i = i + 1
            Bz.Range("A" & i) = Os.Range("B3")
End if
[/vba]
после MsgBox "!!!", vbOkCancel дописать If MsgBox ("!!!" vbOkCancel) = vbOk Then, то получается что создается второй MsgBox.
Можно ли в операторе как то указать что это тот же самый MsgBox.
Хотел попробовать через переменную но не смог.
Спасибо.

Автор - Kinder
Дата добавления - 27.11.2015 в 20:36
RAN Дата: Пятница, 27.11.2015, 20:57 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
F1 не помогает?
[vba]
Код
msg = MsgBox("!!!", vbOKCancel)
If msg = vbOk then
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеF1 не помогает?
[vba]
Код
msg = MsgBox("!!!", vbOKCancel)
If msg = vbOk then
[/vba]

Автор - RAN
Дата добавления - 27.11.2015 в 20:57
Kinder Дата: Пятница, 27.11.2015, 21:03 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 0 ±
Замечаний: 0% ±

Благодарю за ответ.
На сколько помню, по VBA справка всегда была на англ. языке. А я в нем не силен.
Поэтому ни когда не заходил.)))


"И все таки она вертится!"
 
Ответить
СообщениеБлагодарю за ответ.
На сколько помню, по VBA справка всегда была на англ. языке. А я в нем не силен.
Поэтому ни когда не заходил.)))

Автор - Kinder
Дата добавления - 27.11.2015 в 21:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Включить vbOkCancel по условию. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!