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

Вход

Регистрация

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

 

= Мир MS Excel/Проверка условия перед выполнением. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка условия перед выполнением. (Макросы/Sub)
Проверка условия перед выполнением.
Dosmaster Дата: Среда, 27.05.2015, 23:09 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток.
Есть такая беда надо чтоб макрос перед выполнением проверял заполнены ли определенный ячейки, и если не так то выдавал какое либо сообщение после чего завершал работу.
Адреса ячеек:
E29-E35 и B27
Пароль снятие защиты листа, защиты книги и защиты VBA ="1741737"

Помогите пожалуйста....
К сообщению приложен файл: __.xlsm (64.5 Kb)
 
Ответить
СообщениеДоброго времени суток.
Есть такая беда надо чтоб макрос перед выполнением проверял заполнены ли определенный ячейки, и если не так то выдавал какое либо сообщение после чего завершал работу.
Адреса ячеек:
E29-E35 и B27
Пароль снятие защиты листа, защиты книги и защиты VBA ="1741737"

Помогите пожалуйста....

Автор - Dosmaster
Дата добавления - 27.05.2015 в 23:09
Dosmaster Дата: Среда, 27.05.2015, 23:21 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
За помощь соответственно конфетка на WebMoney =))))
 
Ответить
СообщениеЗа помощь соответственно конфетка на WebMoney =))))

Автор - Dosmaster
Дата добавления - 27.05.2015 в 23:21
_Boroda_ Дата: Среда, 27.05.2015, 23:34 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ну, за конфетку я горы сверну.
Ловите
[vba]
Код
    On Error Resume Next
     cc_ = Intersect(Range("B27,E29:E35").SpecialCells(xlCellTypeBlanks), Range("B27,E29:E35")).Address(0, 0)
     If cc_ <> "" Then
         MsgBox "Не заполнены ячейки " & cc_
         Exit Sub
     End If
     On Error GoTo 0
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНу, за конфетку я горы сверну.
Ловите
[vba]
Код
    On Error Resume Next
     cc_ = Intersect(Range("B27,E29:E35").SpecialCells(xlCellTypeBlanks), Range("B27,E29:E35")).Address(0, 0)
     If cc_ <> "" Then
         MsgBox "Не заполнены ячейки " & cc_
         Exit Sub
     End If
     On Error GoTo 0
[/vba]

Автор - _Boroda_
Дата добавления - 27.05.2015 в 23:34
Dosmaster Дата: Среда, 27.05.2015, 23:38 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, Щас попробую..
 
Ответить
Сообщение_Boroda_, Щас попробую..

Автор - Dosmaster
Дата добавления - 27.05.2015 в 23:38
Dosmaster Дата: Среда, 27.05.2015, 23:41 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Эммм, а куда его вставлять? Если в сам макрос то ничего не происходит =)
 
Ответить
СообщениеЭммм, а куда его вставлять? Если в сам макрос то ничего не происходит =)

Автор - Dosmaster
Дата добавления - 27.05.2015 в 23:41
_Boroda_ Дата: Среда, 27.05.2015, 23:46 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вставлять в начало макроса после Unprotect. Какого макроса - не знаю, у Вас там их куча.
Добавьте еще где-нибудь выше [vba]
Код
Dim cc_
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВставлять в начало макроса после Unprotect. Какого макроса - не знаю, у Вас там их куча.
Добавьте еще где-нибудь выше [vba]
Код
Dim cc_
[/vba]

Автор - _Boroda_
Дата добавления - 27.05.2015 в 23:46
AndreTM Дата: Среда, 27.05.2015, 23:47 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Как-то так можно:
Функция проверяет нужный диапазон и сообщает о проблемах. Можно результат функции использовать для прерывания обработки в других процедурах, по типу:
[vba]
Код
if ЕстьПустыеЯчейки() then exit sub
[/vba]
А у меня ключик от вебманей сдох с диском ноута... пока копию ещё не нашел :)

И вообще, вам бы неплохо ваш код переписать с точки зрения "правильности". А то что это за "Select-Selection"


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Четверг, 28.05.2015, 00:02
 
Ответить
СообщениеКак-то так можно:
Функция проверяет нужный диапазон и сообщает о проблемах. Можно результат функции использовать для прерывания обработки в других процедурах, по типу:
[vba]
Код
if ЕстьПустыеЯчейки() then exit sub
[/vba]
А у меня ключик от вебманей сдох с диском ноута... пока копию ещё не нашел :)

И вообще, вам бы неплохо ваш код переписать с точки зрения "правильности". А то что это за "Select-Selection"

Автор - AndreTM
Дата добавления - 27.05.2015 в 23:47
Dosmaster Дата: Среда, 27.05.2015, 23:48 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Теперь все работает =))) Спасибо огромное =))) WMR Ваш написан?
 
Ответить
СообщениеТеперь все работает =))) Спасибо огромное =))) WMR Ваш написан?

Автор - Dosmaster
Дата добавления - 27.05.2015 в 23:48
Dosmaster Дата: Среда, 27.05.2015, 23:52 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
AndreTM, Спасибо огромное, но метод "_Boroda_" Примемлем больше =) Мне как ненужно чтоб пользователь мог продолжить пока все не заполнит =))))
 
Ответить
СообщениеAndreTM, Спасибо огромное, но метод "_Boroda_" Примемлем больше =) Мне как ненужно чтоб пользователь мог продолжить пока все не заполнит =))))

Автор - Dosmaster
Дата добавления - 27.05.2015 в 23:52
Dosmaster Дата: Среда, 27.05.2015, 23:54 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, Отправил =) Если маловато то скажите =)
 
Ответить
Сообщение_Boroda_, Отправил =) Если маловато то скажите =)

Автор - Dosmaster
Дата добавления - 27.05.2015 в 23:54
_Boroda_ Дата: Среда, 27.05.2015, 23:58 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Получил. Спасибо.

Дареному коню кулаками не машут - мы же не договаривались предварительно, поэтому все исключительно на Ваше усмотрение.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПолучил. Спасибо.

Дареному коню кулаками не машут - мы же не договаривались предварительно, поэтому все исключительно на Ваше усмотрение.

Автор - _Boroda_
Дата добавления - 27.05.2015 в 23:58
AndreTM Дата: Среда, 27.05.2015, 23:58 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Мне как ненужно чтоб пользователь мог продолжить пока все не заполнит =))))
Так тогда вам придется вставить проверку (код Boroda) в каждую вашу процедуру. А если внезапно изменится диапазон ячеек для проверки, или надо будет проверять по разным условиям?..
А я вам показываю, как это можно сделать. Ну и мою функцию недолго исправить - достаточно не записывать ответ диалога в переменную emptyCell, и вы получите безусловно ответ о том, что есть проблемы.


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Четверг, 28.05.2015, 00:02
 
Ответить
Сообщение
Мне как ненужно чтоб пользователь мог продолжить пока все не заполнит =))))
Так тогда вам придется вставить проверку (код Boroda) в каждую вашу процедуру. А если внезапно изменится диапазон ячеек для проверки, или надо будет проверять по разным условиям?..
А я вам показываю, как это можно сделать. Ну и мою функцию недолго исправить - достаточно не записывать ответ диалога в переменную emptyCell, и вы получите безусловно ответ о том, что есть проблемы.

Автор - AndreTM
Дата добавления - 27.05.2015 в 23:58
Dosmaster Дата: Четверг, 28.05.2015, 00:22 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
AndreTM,
Цитата
И вообще, вам бы неплохо ваш код переписать с точки зрения "правильности". А то что это за "Select-Selection"

Это еще писалось через "Запись макроса"....
 
Ответить
СообщениеAndreTM,
Цитата
И вообще, вам бы неплохо ваш код переписать с точки зрения "правильности". А то что это за "Select-Selection"

Это еще писалось через "Запись макроса"....

Автор - Dosmaster
Дата добавления - 28.05.2015 в 00:22
KSV Дата: Четверг, 28.05.2015, 00:57 | Сообщение № 14
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
[offtop]Саш! А для чего такой "финт ушами"?
[vba]
Код
cc_ = Intersect(Range("B27,E29:E35").SpecialCells(xlCellTypeBlanks), Range("B27,E29:E35")).Address(0, 0)
[/vba]
Разве этого недостаточно?
[vba]
Код
cc_ = Range("B27,E29:E35").SpecialCells(xlCellTypeBlanks).Address(0, 0)
[/vba][/offtop]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Четверг, 28.05.2015, 00:57
 
Ответить
Сообщение[offtop]Саш! А для чего такой "финт ушами"?
[vba]
Код
cc_ = Intersect(Range("B27,E29:E35").SpecialCells(xlCellTypeBlanks), Range("B27,E29:E35")).Address(0, 0)
[/vba]
Разве этого недостаточно?
[vba]
Код
cc_ = Range("B27,E29:E35").SpecialCells(xlCellTypeBlanks).Address(0, 0)
[/vba][/offtop]

Автор - KSV
Дата добавления - 28.05.2015 в 00:57
_Boroda_ Дата: Четверг, 28.05.2015, 01:42 | Сообщение № 15
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А здесь какая-то неясная непонятность - я поначалу именно так и написал (не, вру, сначала Каунт написал), но у меня заругался VBA. Я вражеский не знаю, поэтому разбираться не стал - лениво было. Дальше как обычно - метод научного тыка, откопал вариант без ругани, им и ответил.
А сейчас все также написал - работает! И Каунт тоже работает! Чудеса.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА здесь какая-то неясная непонятность - я поначалу именно так и написал (не, вру, сначала Каунт написал), но у меня заругался VBA. Я вражеский не знаю, поэтому разбираться не стал - лениво было. Дальше как обычно - метод научного тыка, откопал вариант без ругани, им и ответил.
А сейчас все также написал - работает! И Каунт тоже работает! Чудеса.

Автор - _Boroda_
Дата добавления - 28.05.2015 в 01:42
KSV Дата: Четверг, 28.05.2015, 02:21 | Сообщение № 16
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Понятно :)
А я подумал, что какую-то нестандартную ситуацию обрабатывал... Правда, так и не понял какую, и как она могла возникнуть :) (хотя, вариант, что это осталось от "эксперимента" у меня тоже был :) )


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеПонятно :)
А я подумал, что какую-то нестандартную ситуацию обрабатывал... Правда, так и не понял какую, и как она могла возникнуть :) (хотя, вариант, что это осталось от "эксперимента" у меня тоже был :) )

Автор - KSV
Дата добавления - 28.05.2015 в 02:21
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка условия перед выполнением. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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