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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 09:53   #1
Verano naranjo
Пользователь
 
Регистрация: 24.02.2010
Сообщений: 25
По умолчанию Запрет сохранения книги пока не заполнены все ячейки

Умельцы, помогите, пожалуйста,
каким образом можно реализовать следующую вещь: есть диапазон листа, ячейки которого должны быть все заполнены. Как поставить защиту, чтобы невозможно было сохранить книгу, пока все ячейки не заполнены?
Verano naranjo вне форума Ответить с цитированием
Старый 01.06.2010, 10:20   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении.
Вложения
Тип файла: rar Книга1.rar (5.9 Кб, 141 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 16.06.2010, 12:12   #3
МихаилНН
Новичок
Джуниор
 
Регистрация: 16.06.2010
Сообщений: 1
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Посмотрите пример во вложении.
Не работает(((
МихаилНН вне форума Ответить с цитированием
Старый 16.06.2010, 12:29   #4
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от МихаилНН Посмотреть сообщение
Не работает(((
Макросы включите.
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 23.03.2011, 11:14   #5
HIVE
 
Регистрация: 21.03.2011
Сообщений: 5
По умолчанию

Подскажите как можно реализовать задачку: если в пустой ячейке А1 появляется содержимое, то пока не будут заполнены ячейки В1 и С1 файл невозможно будет сохранить. И так в диапазоне например А1:А5, В1:5: С1:С5 соответственно. Спасибо заранее если кто-то откликнется
HIVE вне форума Ответить с цитированием
Старый 23.03.2011, 11:50   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от HIVE Посмотреть сообщение
Подскажите как можно реализовать задачку: если в пустой ячейке А1 появляется содержимое, то пока не будут заполнены ячейки В1 и С1 файл невозможно будет сохранить. И так в диапазоне например А1:А5, В1:5: С1:С5 соответственно. Спасибо заранее если кто-то откликнется
Посмотрите на формулу в зелёной ячейке:



Код:
  Ячейка: D1      Формула массива  (стиль A1):   =ИЛИ(НЕ(ЕПУСТО(A1:A5))*ЕПУСТО(B1:B5)*ЕПУСТО(C1:C5))
                  Формула массива  (стиль R1C1): =ИЛИ(НЕ(ЕПУСТО(RC[-3]:R[4]C[-3]))*ЕПУСТО(RC[-2]:R[4]C[-2])
*ЕПУСТО(RC[-1]:R[4]C[-1]))

Внимание: ввод формул массива завершается нажатием CTRL+SHIFT+ENTER вместо ENTER
Теперь простейший макрос (расположенный в модуле книги) будет блокировать сохранение файла, если условие не выполняется:

Код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = [d1]
End Sub
Можно немного изменить макрос - тогда формула на листе не понадобится:
Код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = [OR(NOT(ISBLANK(A1:A5))*ISBLANK(B1:B5)*ISBLANK(C1:C5))]
End Sub

Последний раз редактировалось EducatedFool; 23.03.2011 в 11:53.
EducatedFool вне форума Ответить с цитированием
Старый 23.03.2011, 12:48   #7
HIVE
 
Регистрация: 21.03.2011
Сообщений: 5
По умолчанию

Спасибо, еще немного побеспокою Вас. В примере сохранение возможно, когда заполнена только одна ячейка (либо B1 либо С1) при условии что А1 заполнена.

Немножко уточню конечную цель - Нужно чтобы при вводе значения в А1 пользователю необходимо было заполнить как B1 так и С1, а иначе невозможно было бы сохраниться (лучше всего сообщением типа "Внесите необходимые данные")
HIVE вне форума Ответить с цитированием
Старый 01.04.2011, 07:59   #8
Miguel Sanchez
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 33
По умолчанию

Может так:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = [NOT(ISBLANK(A1:A5))*OR(ISBLANK(B1:B 5);ISBLANK(C1:C5))]
End Sub
Miguel Sanchez вне форума Ответить с цитированием
Старый 04.04.2011, 10:06   #9
Miguel Sanchez
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 33
По умолчанию

почему-то у меня эксель не перехватывает данное событие, т.е. никакой реакции на save нет...
Вот моя модернизация данной задачи:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

'Sub Work()
'Set my_ran = Intersect(ActiveSheet.UsedRange, [a:a])
Set start_ran = ActiveSheet.UsedRange.Item(1).Curre ntRegion

MsgBox "Your table is :" & vbCr & "[" & start_ran.Address & "]", vbInformation
On Error GoTo Err_def
Set blank_ran = start_ran.SpecialCells(xlCellTypeBl anks)
If Not IsEmpty(blank_ran) Then
With blank_ran
.Select
.Interior.ColorIndex = 6
.Interior.Pattern = xlSolid
End With
Cancel = 1
End If
Exit Sub
Err_def: MsgBox "There isn't blank cells in your region!", vbApplicationModal + vbExclamation
With start_ran
.Interior.ColorIndex = 0
End With
Cancel = 0
End Sub

ЗЫ: как обычная "sub" процедура работает, а как событие - не хочет. Что не так?
Miguel Sanchez вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение книги Excel по названию ячейки и по пути ячейки IFRSoff Microsoft Office Excel 16 07.06.2012 16:58
Как удалить из книги все подключения Oooleg Microsoft Office Excel 3 06.02.2010 22:51
Как проверить все ли ячейки в StringGrid заполнены или нет ? Ветас Помощь студентам 4 11.11.2009 22:54
Все висит пока выполняется процедура XPAiN Общие вопросы Delphi 3 07.05.2008 15:03
как проверить все ли поля заполнены в СТРОКЕ ? Максим-2 Компоненты Delphi 6 03.08.2007 22:31