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

Вход

Регистрация

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

 

= Мир MS Excel/Макросы-диалоговые сообщения - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макросы-диалоговые сообщения (Формулы/Formulas)
Макросы-диалоговые сообщения
Tatsiana Дата: Воскресенье, 14.02.2016, 17:35 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, помогите, пожалуйста, написать макрос. Есть файл-Excel, это тест и в определенный столбец нужно вводить только, например, цифру 1. Пользователь ошибся и ввел что-то другое. И нужно мне, чтобы выходило окошко диалоговое, например, введено неправильное значение, повторите попытку. И ячейка, в которую введено неправильное значение обнулялась.
К сообщению приложен файл: ______.xlsm (68.4 Kb)


Tanya
 
Ответить
СообщениеЗдравствуйте, помогите, пожалуйста, написать макрос. Есть файл-Excel, это тест и в определенный столбец нужно вводить только, например, цифру 1. Пользователь ошибся и ввел что-то другое. И нужно мне, чтобы выходило окошко диалоговое, например, введено неправильное значение, повторите попытку. И ячейка, в которую введено неправильное значение обнулялась.

Автор - Tatsiana
Дата добавления - 14.02.2016 в 17:35
Udik Дата: Воскресенье, 14.02.2016, 17:54 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
А как вы избежите одновременного ввода 1 в 2-х столбцах?
По мне так оставить 1 заполняемый столбец, и подключить проверку данных.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеА как вы избежите одновременного ввода 1 в 2-х столбцах?
По мне так оставить 1 заполняемый столбец, и подключить проверку данных.

Автор - Udik
Дата добавления - 14.02.2016 в 17:54
gling Дата: Воскресенье, 14.02.2016, 17:58 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2519
Репутация: 674 ±
Замечаний: 0% ±

2010
Здравствуйте. Если Вы в проверке данных выберите не "Предупреждение", как сейчас, а "Остановку", то другое значение нельзя будет ввести. Или это не подходит? Можно еще дополнительно напоминалку поставить, там же в проверке данных, Сообщение при вводе. Но проверка данных от копирования не спасает.
К сообщению приложен файл: 5454767.xlsm (68.8 Kb)


ЯД-41001506838083

Сообщение отредактировал gling - Воскресенье, 14.02.2016, 18:13
 
Ответить
СообщениеЗдравствуйте. Если Вы в проверке данных выберите не "Предупреждение", как сейчас, а "Остановку", то другое значение нельзя будет ввести. Или это не подходит? Можно еще дополнительно напоминалку поставить, там же в проверке данных, Сообщение при вводе. Но проверка данных от копирования не спасает.

Автор - gling
Дата добавления - 14.02.2016 в 17:58
Tatsiana Дата: Воскресенье, 14.02.2016, 18:00 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В инструкции к тесту указано, какая цифра должна вводиться в тот или иной столбец, но человеческий фактор... В данном случае в столбец D вводится только 1, а в столбец E только 0. Также ячейка может быть и пустой


Tanya
 
Ответить
СообщениеВ инструкции к тесту указано, какая цифра должна вводиться в тот или иной столбец, но человеческий фактор... В данном случае в столбец D вводится только 1, а в столбец E только 0. Также ячейка может быть и пустой

Автор - Tatsiana
Дата добавления - 14.02.2016 в 18:00
Udik Дата: Воскресенье, 14.02.2016, 18:07 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Ну в проверку данных впихнуть 1 /пусто, а для другого 0/пусто

Только мне интересно, что получится при введении 1-0 в столбцы, смущает меня логика алгоритма.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНу в проверку данных впихнуть 1 /пусто, а для другого 0/пусто

Только мне интересно, что получится при введении 1-0 в столбцы, смущает меня логика алгоритма.

Автор - Udik
Дата добавления - 14.02.2016 в 18:07
Wasilich Дата: Воскресенье, 14.02.2016, 21:21 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Так наверное надо.
Код в модуль листа.

Только есть вопрос, зачем две колонки? Для усложнения проверки? :)
В одной то, два ответа не сделаешь. Либо 0, либо 1. А СЧЕТЕСЛИ() посчитает и 1-цы и 0-ли.
ЗЫ. ВО как. Посмотрел, 0-ли то и не считаются, тем более вводить в одну колонку D и 1 и 0 проще будет. И код проверки короче.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target = "" Then Exit Sub
   Application.EnableEvents = False
   If Not Application.Intersect(Range("D5:D32"), Target) Is Nothing Then
      If Target > 1 Then
         MsgBox "Вводить можно только 1-цу или 0."
         Target = ""
      End If
   End If
   Application.EnableEvents = True
End Sub
[/vba]


Сообщение отредактировал Wasilic - Воскресенье, 14.02.2016, 21:51
 
Ответить
СообщениеТак наверное надо.
Код в модуль листа.

Только есть вопрос, зачем две колонки? Для усложнения проверки? :)
В одной то, два ответа не сделаешь. Либо 0, либо 1. А СЧЕТЕСЛИ() посчитает и 1-цы и 0-ли.
ЗЫ. ВО как. Посмотрел, 0-ли то и не считаются, тем более вводить в одну колонку D и 1 и 0 проще будет. И код проверки короче.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target = "" Then Exit Sub
   Application.EnableEvents = False
   If Not Application.Intersect(Range("D5:D32"), Target) Is Nothing Then
      If Target > 1 Then
         MsgBox "Вводить можно только 1-цу или 0."
         Target = ""
      End If
   End If
   Application.EnableEvents = True
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 14.02.2016 в 21:21
StoTisteg Дата: Воскресенье, 14.02.2016, 21:29 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
А не проще проверять введённое значение и очищать ячейку, если оно не равно допустимому? Визуальный эффект будет такой же, как если заблокированы все клавиши, кроме 0 и 1.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеА не проще проверять введённое значение и очищать ячейку, если оно не равно допустимому? Визуальный эффект будет такой же, как если заблокированы все клавиши, кроме 0 и 1.

Автор - StoTisteg
Дата добавления - 14.02.2016 в 21:29
gling Дата: Воскресенье, 14.02.2016, 23:55 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2519
Репутация: 674 ±
Замечаний: 0% ±

2010
Цитата
А не проще проверять введённое значение
Тогда можно при вставке любого значения писать нужное, а при очистке ячейке оставлять ячейку пустой, тогда и предупреждать не надо.


ЯД-41001506838083

Сообщение отредактировал gling - Воскресенье, 14.02.2016, 23:56
 
Ответить
Сообщение
Цитата
А не проще проверять введённое значение
Тогда можно при вставке любого значения писать нужное, а при очистке ячейке оставлять ячейку пустой, тогда и предупреждать не надо.

Автор - gling
Дата добавления - 14.02.2016 в 23:55
StoTisteg Дата: Понедельник, 15.02.2016, 00:24 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
при вставке любого значения писать нужное

Не факт. вставка не того может быть случайным попаданием мышою не в ту ячейку.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
при вставке любого значения писать нужное

Не факт. вставка не того может быть случайным попаданием мышою не в ту ячейку.

Автор - StoTisteg
Дата добавления - 15.02.2016 в 00:24
Tatsiana Дата: Понедельник, 15.02.2016, 18:52 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Так наверное надо.

Программа не работает!(
К сообщению приложен файл: 5860793.png (41.6 Kb)


Tanya

Сообщение отредактировал Tatsiana - Понедельник, 15.02.2016, 18:54
 
Ответить
Сообщение
Так наверное надо.

Программа не работает!(

Автор - Tatsiana
Дата добавления - 15.02.2016 в 18:52
Wasilich Дата: Понедельник, 15.02.2016, 19:26 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Программа не работает!
Странно! У меня работает.
Очистил листы. Ибо даже в архиве файл больше 100 кб. Проверяйте оба варианта.
К сообщению приложен файл: Tatsiana1.xls (61.0 Kb) · Tatsiana2.xls (59.0 Kb)
 
Ответить
Сообщение
Программа не работает!
Странно! У меня работает.
Очистил листы. Ибо даже в архиве файл больше 100 кб. Проверяйте оба варианта.

Автор - Wasilich
Дата добавления - 15.02.2016 в 19:26
gling Дата: Понедельник, 15.02.2016, 20:16 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2519
Репутация: 674 ±
Замечаний: 0% ±

2010
Может так записать? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
   'If Target = "" Then Exit Sub
   Application.EnableEvents = False
   If Not Application.Intersect(Range("D5:D32"), Target) Is Nothing Then
      If Target <> 0 And Target <> 1 Then
         MsgBox "Вводить можно только 1-цу или 0."
         Target = ""
      End If
   End If
   Application.EnableEvents = True
End Sub
[/vba]
К сообщению приложен файл: 2192138.xls (58.5 Kb)


ЯД-41001506838083

Сообщение отредактировал gling - Понедельник, 15.02.2016, 20:18
 
Ответить
СообщениеМожет так записать? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
   'If Target = "" Then Exit Sub
   Application.EnableEvents = False
   If Not Application.Intersect(Range("D5:D32"), Target) Is Nothing Then
      If Target <> 0 And Target <> 1 Then
         MsgBox "Вводить можно только 1-цу или 0."
         Target = ""
      End If
   End If
   Application.EnableEvents = True
End Sub
[/vba]

Автор - gling
Дата добавления - 15.02.2016 в 20:16
Wasilich Дата: Понедельник, 15.02.2016, 20:43 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Да, не учел ситуацию. Спасибо gling. Только не вместо а добавить, в первом коде.
[vba]
Код
If Target.Cells.Count > 1 Then Exit Sub
'перед
If Target = "" Then Exit Sub
[/vba]
 
Ответить
СообщениеДа, не учел ситуацию. Спасибо gling. Только не вместо а добавить, в первом коде.
[vba]
Код
If Target.Cells.Count > 1 Then Exit Sub
'перед
If Target = "" Then Exit Sub
[/vba]

Автор - Wasilich
Дата добавления - 15.02.2016 в 20:43
gling Дата: Понедельник, 15.02.2016, 21:01 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2519
Репутация: 674 ±
Замечаний: 0% ±

2010
Здравствуйте Wasilic. Убрал, потому что не понял в каких случаях нужна эта проверка. А это [vba]
Код
If Target <> 0 And Target <> 1 Then
[/vba] сменил потому, что отрицательные значения принимал за правильные. Когда нужна проверка =""? Вроде и без неё всё работает нормально.


ЯД-41001506838083

Сообщение отредактировал gling - Понедельник, 15.02.2016, 21:04
 
Ответить
СообщениеЗдравствуйте Wasilic. Убрал, потому что не понял в каких случаях нужна эта проверка. А это [vba]
Код
If Target <> 0 And Target <> 1 Then
[/vba] сменил потому, что отрицательные значения принимал за правильные. Когда нужна проверка =""? Вроде и без неё всё работает нормально.

Автор - gling
Дата добавления - 15.02.2016 в 21:01
Wasilich Дата: Понедельник, 15.02.2016, 21:25 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Вроде и без неё всё работает нормально.
Да, работает но, в первом коде проверяются все IF-ы, а так, сразу на выход. :)
 
Ответить
Сообщение
Вроде и без неё всё работает нормально.
Да, работает но, в первом коде проверяются все IF-ы, а так, сразу на выход. :)

Автор - Wasilich
Дата добавления - 15.02.2016 в 21:25
IWI Дата: Вторник, 16.02.2016, 11:30 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Не проще ли сделать, чтоб выбор в ячейке был только тот, что вы предложите и никакие макросы ненужны? Например как тут, форма для голосования.Ссылка удалена. Выкладывайте файлы сюда В данном случае использовано "за", "против", "воздержался", в вашем случае будет "1" или "0". Здесь, для ячеек С12:R365, использована "проверка данных" по списку $A$6:$A$8, т.е. подставляется выбор данных только тех, что находятся в ячейках А6, А7, А8, меняем значение ячеек, меняется и выбор. Надеюсь доходчиво объяснил.))
Отредактировал ваш файл как надо и выложил.
К сообщению приложен файл: 3951965.xlsx (65.7 Kb) · 6068843.xlsm (67.8 Kb)


Сообщение отредактировал IWI - Вторник, 16.02.2016, 13:01
 
Ответить
СообщениеНе проще ли сделать, чтоб выбор в ячейке был только тот, что вы предложите и никакие макросы ненужны? Например как тут, форма для голосования.Ссылка удалена. Выкладывайте файлы сюда В данном случае использовано "за", "против", "воздержался", в вашем случае будет "1" или "0". Здесь, для ячеек С12:R365, использована "проверка данных" по списку $A$6:$A$8, т.е. подставляется выбор данных только тех, что находятся в ячейках А6, А7, А8, меняем значение ячеек, меняется и выбор. Надеюсь доходчиво объяснил.))
Отредактировал ваш файл как надо и выложил.

Автор - IWI
Дата добавления - 16.02.2016 в 11:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макросы-диалоговые сообщения (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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