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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2014, 11:28   #1
maxvip
Форумчанин
 
Регистрация: 11.05.2009
Сообщений: 139
По умолчанию проверка заполнения ячеек

Здравствовать всем! вопрос вот такой -
есть пять ячеек, которые заполняет юзер. он должен занести данные только в ДВЕ любых ячеек из пяти! как организовать проверку заполнения??? что заполнено не ТРИ не четыре, а только ДВЕ ячейки из пяти???
вот отрывок кода,
If Cells(6, 6) = 0 And Cells(6, 8) = 0 And Cells(6, 10) = 0 And Cells(12, 6) = 0 And Cells(12, 8) = 0 Then
MsgBox "введите значения двух, любых элементов!"
Else

Последний раз редактировалось maxvip; 24.11.2014 в 11:32.
maxvip вне форума Ответить с цитированием
Старый 24.11.2014, 12:08   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Например, так:
Код:
Sub qq()
    Dim x As Range
    Set x = Union(Cells(6, 6), Cells(6, 8), Cells(6, 10), Cells(12, 6), Cells(12, 8))
    If Application.CountA(x) <> 2 Then MsgBox "Заполнено НЕ две ячейки из диапазона!"
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.11.2014, 12:13   #3
maxvip
Форумчанин
 
Регистрация: 11.05.2009
Сообщений: 139
По умолчанию

ага! то есть -
объявили диапазон
записали в рамки диапазона нужные ячейки
...а вот етого -"Application.CountA" я и не знаю....
maxvip вне форума Ответить с цитированием
Старый 24.11.2014, 12:23   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

CountA - это функция ексел СЧЕТЗ
Код:
Sub qq()
    If Application.CountA(Cells(6, 6), Cells(6, 8), Cells(6, 10), Cells(12, 6), Cells(12, 8)) <> 2 Then MsgBox "Заполнено НЕ две ячейки из диапазона!"
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.11.2014, 12:39   #5
maxvip
Форумчанин
 
Регистрация: 11.05.2009
Сообщений: 139
По умолчанию

ну так то да! а после этой строки Else будет работать??? у меня чета не получается

If Cells(6, 6) = 0 And Cells(6, 8) = 0 And Cells(6, 10) = 0 And Cells(12, 6) = 0 And Cells(12, 8) = 0 Then
MsgBox "введите два значение"
Exit Sub
'вот я проверил на "0" и если "0" то вышел из процедуры. если же не "0" то...

Else
If Application.CountA(Cells(6, 6), Cells(6, 8), Cells(6, 10), Cells(12, 6), Cells(12, 8)) <> 2 Then MsgBox "Заполнено НЕ две ячейки из диапазона!"
Exit Sub
...ну а дальше надо либо выйти либо считать дальше, но не получается
maxvip вне форума Ответить с цитированием
Старый 24.11.2014, 12:49   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Не совсем понятно. Наверное, Вам так нужно?
Код:
Sub qq()
    Dim x As Range
    Set x = Union(Cells(6, 6), Cells(6, 8), Cells(6, 10), Cells(12, 6), Cells(12, 8))
    If Application.CountA(x) <> 2 Then
        MsgBox "Заполнено НЕ две ячейки из диапазона!"
        Exit Sub
    End If
    ''Продолжение Вашего кода, если заполнены две ячейки.
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.11.2014, 12:55   #7
maxvip
Форумчанин
 
Регистрация: 11.05.2009
Сообщений: 139
По умолчанию

а-а-а! ну да! чет я затупил, тут же проверка и есть а я еще одну проверку пытаюсь сделать!
спасибо за помощь!
maxvip вне форума Ответить с цитированием
Старый 24.11.2014, 13:06   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Только следует иметь ввиду, что для данного примера, ноль - это тоже значение.
Поэтому, перед подсчетом значений, лучше удалить нули:
Код:
Sub qq()
    Dim x As Range
    Set x = Union(Cells(6, 6), Cells(6, 8), Cells(6, 10), Cells(12, 6), Cells(12, 8))
    x.Replace 0, "", xlWhole
    If Application.CountA(x) <> 2 Then
        MsgBox "Заполнено НЕ две ячейки из диапазона!"
        Exit Sub
    End If
    ''Продолжение Вашего кода, если заполнены две ячейки.
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.11.2014, 13:09   #9
maxvip
Форумчанин
 
Регистрация: 11.05.2009
Сообщений: 139
По умолчанию

да! спасибо! очистка ячеек от ненужных значений будет предусмотрена
maxvip вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Причина недоступности (и неработоспособности) заполнения ячеек прогрессией Serge_Bliznykov Microsoft Office Excel 8 23.09.2017 14:19
проверка заполнения полей segail HTML и CSS 1 31.01.2012 20:47
Форма заполнения ячеек Severny Microsoft Office Excel 8 25.08.2011 11:10
Проверка корректности заполнения формы True_girl JavaScript, Ajax 1 05.06.2010 08:02
Алгоритм заполнения ячеек Иван_1651 Microsoft Office Excel 3 11.03.2009 21:27