Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2010, 00:03   #1
Флина
Пользователь
 
Регистрация: 25.10.2010
Сообщений: 12
По умолчанию Функция OR но для шести значений

Доброй ночи!
У меня выпадающий список из шести значений в ячейке. И я хочу, чтобы кроме значений из этого списка никакое другое значение нельзя было вставить, написать и появлялось предостерегающее сообщение. Я знаю, например, как это сделать для одного значения с помощью макроса через фукцию if. Но как это сделать с помощью макроса для шести значений? С помощью какого оператора перечислить все 6 значений?
Флина вне форума Ответить с цитированием
Старый 10.11.2010, 00:05   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Select Case
http://msdn.microsoft.com/ru-ru/library/cy37t14y.aspx
Так?
motorway вне форума Ответить с цитированием
Старый 10.11.2010, 00:21   #3
Флина
Пользователь
 
Регистрация: 25.10.2010
Сообщений: 12
По умолчанию

Спасибо. Но нет.
Наверно так, что если а не содержит ряд значений, то какое-то действие. Вот как описать вот это содержит
Флина вне форума Ответить с цитированием
Старый 10.11.2010, 00:26   #4
Флина
Пользователь
 
Регистрация: 25.10.2010
Сообщений: 12
По умолчанию

Коряво описала.
Есть список. И в нем значения:
яблоки
груши
сливы
персики
помидоры
огурцы
Как описать, что если ячейка не содержит какое-то из этих значений, то какое-то действие. Вот эта операция содержит как описывается?
Флина вне форума Ответить с цитированием
Старый 10.11.2010, 00:34   #5
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Например, так можно:
Код:
Function F1(Target As Range)
F1 = False
If Target.Value = "яблоки" Then F1 = True
If Target.Value = "груши" Then F1 = True
If Target.Value = "сливы" Then F1 = True
If Target.Value = "персики" Then F1 = True
If Target.Value = "помидоры" Then F1 = True
If Target.Value = "огурцы" Then F1 = True

End Function
Использование функции:

Код:
If F1(Cells(1, 1)) Then MsgBox "Да" Else MsgBox "Нет"
motorway вне форума Ответить с цитированием
Старый 10.11.2010, 00:45   #6
Флина
Пользователь
 
Регистрация: 25.10.2010
Сообщений: 12
По умолчанию

Большое спасибо))))
Флина вне форума Ответить с цитированием
Старый 10.11.2010, 00:48   #7
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

Цитата:
Сообщение от Флина Посмотреть сообщение
Коряво описала.
Есть список. И в нем значения:
яблоки
груши
сливы
персики
помидоры
огурцы
Как описать, что если ячейка не содержит какое-то из этих значений, то какое-то действие. Вот эта операция содержит как описывается?
чем не устраивает предложенный motorway Select case? Измените значение ячейки "С3"
Вложения
Тип файла: zip Validation+.zip (7.4 Кб, 12 просмотров)
EugeneS вне форума Ответить с цитированием
Старый 10.11.2010, 00:48   #8
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Можно покороче:
Код:
Function F1(Target As Range)
F1 = False
v = Target.Value
If v = "яблоки" Or v = "груши" Or v = "сливы" Or v = "персики" Or v = "помидоры" Or v = "огурцы" Then F1 = True
End Function
motorway вне форума Ответить с цитированием
Старый 10.11.2010, 02:49   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

для данной задачи и такая функция подойдет:
Код:
Function YesNo(r As Range) As Boolean
  YesNo = InStr("яблокигрушисливыперсикипомидорыогурцы", r) > 0
End Function
или для строгости (чтобы случайно "помидор" не проскочил так:
Код:
Function YesNo(r As Range) As Boolean
  YesNo = InStr(".яблоки.груши.сливы.персики.помидоры.огурцы.", "." & r & ".") > 0
End Function
Вложения
Тип файла: rar книга442.rar (8.5 Кб, 13 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 10.11.2010 в 02:55.
IgorGO вне форума Ответить с цитированием
Старый 10.11.2010, 12:53   #10
Флина
Пользователь
 
Регистрация: 25.10.2010
Сообщений: 12
По умолчанию

Спасибо всем за ответы)))
А как сделать, чтобы это было не для одной ячейки? А в каждой ячейки какого столбца. Чтобы ограничить ввод данных во все ячейки столбца.
Флина вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача о шести подряд идущих единицах. llTibegll Помощь студентам 11 06.11.2009 10:04
Функция: возвращение нескольких значений. Вадим Буренков Общие вопросы Delphi 2 14.05.2009 18:05
Создание надстроек. Функция, возвращающая массив значений Jarik Microsoft Office Excel 6 13.01.2009 23:11
Функция ЕСЛИ и диапазоны значений. Ник Харди Microsoft Office Excel 3 05.12.2007 13:39