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

Вход

Регистрация

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

 

= Мир MS Excel/Запрет сохранения - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Запрет сохранения
denizen Дата: Среда, 06.07.2011, 16:28 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Доброго времени суток! biggrin

Прошу помочь в решении ситуации. Дело в том, что имеется файл общего доступа с данными. Есть потребность НЕ сохранять файл с пустыми ячейками в определенном столбце, кол-во строк варьируется в течении дня (добавляются новые, удаляются ненужные). Пользователи очищают значения в ячейках "нашего" столбца (необходимость рабочего процесса) , но не сохраняют. Точнее не должны сохранять, исключения не редкость... Пользователи оперируют с данными в строке напротив пустой ячейки, а после заполняют ее и сохраняются. Так как же не допустить случайного сохранения файла при пустых ячейках определенного столбца? Диапазон столбца начинается от 6 строки, а конечная строка варьируется.

Макрос использовать нельзя.
 
Ответить
СообщениеДоброго времени суток! biggrin

Прошу помочь в решении ситуации. Дело в том, что имеется файл общего доступа с данными. Есть потребность НЕ сохранять файл с пустыми ячейками в определенном столбце, кол-во строк варьируется в течении дня (добавляются новые, удаляются ненужные). Пользователи очищают значения в ячейках "нашего" столбца (необходимость рабочего процесса) , но не сохраняют. Точнее не должны сохранять, исключения не редкость... Пользователи оперируют с данными в строке напротив пустой ячейки, а после заполняют ее и сохраняются. Так как же не допустить случайного сохранения файла при пустых ячейках определенного столбца? Диапазон столбца начинается от 6 строки, а конечная строка варьируется.

Макрос использовать нельзя.

Автор - denizen
Дата добавления - 06.07.2011 в 16:28
Serge_007 Дата: Среда, 06.07.2011, 17:02 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Здравствуйте.

Quote (denizen)
Макрос использовать нельзя.

Quote (denizen)
как же не допустить случайного сохранения файла при пустых ячейках определенного столбца?

Никак.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте.

Quote (denizen)
Макрос использовать нельзя.

Quote (denizen)
как же не допустить случайного сохранения файла при пустых ячейках определенного столбца?

Никак.

Автор - Serge_007
Дата добавления - 06.07.2011 в 17:02
0mega Дата: Среда, 06.07.2011, 17:13 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 627
Репутация: 34 ±
Замечаний: 0% ±

denizen, здравствуйте
на сегодняшний день нет формульного запрета на сохранение.
Как вариант можно высветить предупреждение "Необходимо заполнить синий столбец"
И только когда весь синий столбец будет заполнен, тогда эта надпись сменится на " Теперь можно сохранять".
Если вас устраивает "предупреждение" - тогда таблицу в студию.
В противном случае - только VBA
 
Ответить
Сообщениеdenizen, здравствуйте
на сегодняшний день нет формульного запрета на сохранение.
Как вариант можно высветить предупреждение "Необходимо заполнить синий столбец"
И только когда весь синий столбец будет заполнен, тогда эта надпись сменится на " Теперь можно сохранять".
Если вас устраивает "предупреждение" - тогда таблицу в студию.
В противном случае - только VBA

Автор - 0mega
Дата добавления - 06.07.2011 в 17:13
denizen Дата: Среда, 06.07.2011, 17:38 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Сорри, не довел мысль до конца:)
без макроса конечно нельзя никакого окна вывести итд...
но ведь можно с помощью формулы не дать ячейке пустовать. Уточню: очищаются ячейки и попорядку и с перескоками. С помощью Данные-Проверка можно не дать остаться 1 пустой ячейке и то только если она будет не просто выделена, а находиться в режиме ввода текста.
 
Ответить
СообщениеСорри, не довел мысль до конца:)
без макроса конечно нельзя никакого окна вывести итд...
но ведь можно с помощью формулы не дать ячейке пустовать. Уточню: очищаются ячейки и попорядку и с перескоками. С помощью Данные-Проверка можно не дать остаться 1 пустой ячейке и то только если она будет не просто выделена, а находиться в режиме ввода текста.

Автор - denizen
Дата добавления - 06.07.2011 в 17:38
denizen Дата: Среда, 06.07.2011, 17:50 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Формула не запретит сохраниться, это само собой. А возможен ли вариант с помощью формулы сделать так, что если мы выделив нужные ячейки, очищаем их содержимое и когда переходим на любую другую ячейку наши пустующие ячейки заполняются???
к примеру ячейка вне таблицы=ЕСЛИ($А1="";33) и потом ссылка чтобы А1="" =33

или А1 сразу после очистки будет заполнена значением 33 ???

в целях рабочего процесса ячейки должны некоторое время оставаться пустыми
 
Ответить
СообщениеФормула не запретит сохраниться, это само собой. А возможен ли вариант с помощью формулы сделать так, что если мы выделив нужные ячейки, очищаем их содержимое и когда переходим на любую другую ячейку наши пустующие ячейки заполняются???
к примеру ячейка вне таблицы=ЕСЛИ($А1="";33) и потом ссылка чтобы А1="" =33

или А1 сразу после очистки будет заполнена значением 33 ???

в целях рабочего процесса ячейки должны некоторое время оставаться пустыми

Автор - denizen
Дата добавления - 06.07.2011 в 17:50
Serge_007 Дата: Среда, 06.07.2011, 17:51 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (denizen)
С помощью Данные-Проверка можно не дать остаться 1 пустой ячейке...

А с помощью Ctrl+C - Ctrl+V можно удалить условия Данные-Проверка из любой ячейки...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (denizen)
С помощью Данные-Проверка можно не дать остаться 1 пустой ячейке...

А с помощью Ctrl+C - Ctrl+V можно удалить условия Данные-Проверка из любой ячейки...

Автор - Serge_007
Дата добавления - 06.07.2011 в 17:51
Serge_007 Дата: Среда, 06.07.2011, 17:52 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (denizen)
...или А1 сразу после очистки будет заполнена значением 33?

Да.

ЗЫ Это же легко проверить...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (denizen)
...или А1 сразу после очистки будет заполнена значением 33?

Да.

ЗЫ Это же легко проверить...

Автор - Serge_007
Дата добавления - 06.07.2011 в 17:52
denizen Дата: Среда, 06.07.2011, 18:00 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Serge_007,

В общем идея без помощи Бейсика фантастический бред smile

Сергей, а не могли бы Вы показать пример процедуры запрета, для моей ситуации? Буду очень признателен.
 
Ответить
СообщениеSerge_007,

В общем идея без помощи Бейсика фантастический бред smile

Сергей, а не могли бы Вы показать пример процедуры запрета, для моей ситуации? Буду очень признателен.

Автор - denizen
Дата добавления - 06.07.2011 в 18:00
Serge_007 Дата: Среда, 06.07.2011, 18:06 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (denizen)
не могли бы Вы показать пример процедуры запрета, для моей ситуации?

Попробуйте закрыть файл из вложения.
К сообщению приложен файл: denizen.xls (27.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (denizen)
не могли бы Вы показать пример процедуры запрета, для моей ситуации?

Попробуйте закрыть файл из вложения.

Автор - Serge_007
Дата добавления - 06.07.2011 в 18:06
0mega Дата: Среда, 06.07.2011, 19:45 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 627
Репутация: 34 ±
Замечаний: 0% ±

Quote (denizen)
в целях рабочего процесса ячейки должны некоторое время оставаться пустыми

"некоторое время" можно реализовать через логическое "И"
=ЕСЛИ(И($А1="";$Z$14="");...)
условие будет выполняться только при заполнении А1 и Z14
 
Ответить
Сообщение
Quote (denizen)
в целях рабочего процесса ячейки должны некоторое время оставаться пустыми

"некоторое время" можно реализовать через логическое "И"
=ЕСЛИ(И($А1="";$Z$14="");...)
условие будет выполняться только при заполнении А1 и Z14

Автор - 0mega
Дата добавления - 06.07.2011 в 19:45
denizen Дата: Среда, 06.07.2011, 21:57 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Serge_007,
Закрылся только после ввода значения приводящего к истинне smile

А как заблокировать сочетание клавиш "Ctrl+S" ?

и сразу вопрос: нажатие дискеты на панели инструментов и "Ctrl+S" одно и тоже? если нет - то какой командой блокировать функцию сохранения?
 
Ответить
СообщениеSerge_007,
Закрылся только после ввода значения приводящего к истинне smile

А как заблокировать сочетание клавиш "Ctrl+S" ?

и сразу вопрос: нажатие дискеты на панели инструментов и "Ctrl+S" одно и тоже? если нет - то какой командой блокировать функцию сохранения?

Автор - denizen
Дата добавления - 06.07.2011 в 21:57
Serge_007 Дата: Среда, 06.07.2011, 22:10 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (denizen)
нажатие дискеты на панели инструментов и "Ctrl+S" одно и тоже?

Да.

Quote (denizen)
ак заблокировать сочетание клавиш "Ctrl+S" ?

А зачем?
Всё-равно файл закрыть до выполнения заданного условия невозможно.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (denizen)
нажатие дискеты на панели инструментов и "Ctrl+S" одно и тоже?

Да.

Quote (denizen)
ак заблокировать сочетание клавиш "Ctrl+S" ?

А зачем?
Всё-равно файл закрыть до выполнения заданного условия невозможно.

Автор - Serge_007
Дата добавления - 06.07.2011 в 22:10
denizen Дата: Среда, 06.07.2011, 22:34 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Quote (Serge_007)
А зачем? Всё-равно файл закрыть до выполнения заданного условия невозможно.


это я понимаю,но доступ общий и если кто-то сохранится то следующий пользователь обновит в скором времени этот файл - увидит добавления нужные ему, начнет с ними работать и захватит те где пустые ячейки, которые другой очистил для работы с ними и сохранился. следует трата времени на возвращение к первоначальному этапу smile
потому необходимо заблокировать Save при пустых ячеках определенного столбца ... диапазон не на весь столбец и его "высота" варьируется.
 
Ответить
Сообщение
Quote (Serge_007)
А зачем? Всё-равно файл закрыть до выполнения заданного условия невозможно.


это я понимаю,но доступ общий и если кто-то сохранится то следующий пользователь обновит в скором времени этот файл - увидит добавления нужные ему, начнет с ними работать и захватит те где пустые ячейки, которые другой очистил для работы с ними и сохранился. следует трата времени на возвращение к первоначальному этапу smile
потому необходимо заблокировать Save при пустых ячеках определенного столбца ... диапазон не на весь столбец и его "высота" варьируется.

Автор - denizen
Дата добавления - 06.07.2011 в 22:34
Serge_007 Дата: Среда, 06.07.2011, 23:04 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Тогда так.
К сообщению приложен файл: denizen_2.xls (28.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеТогда так.

Автор - Serge_007
Дата добавления - 06.07.2011 в 23:04
denizen Дата: Среда, 06.07.2011, 23:30 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Serge_007,
Спасибо за отличную подсказку, будем пробовать...
хочу только уточнить: имеется ли возможность назначить в коде VBA нижнюю границу диапазона столбца так, чтобы она плавала. В "тело" диапазона будут добавляться строки. Тобеш сейчас у нас диапазон А6:А118, а через минут 5 будет А6:А354.
 
Ответить
СообщениеSerge_007,
Спасибо за отличную подсказку, будем пробовать...
хочу только уточнить: имеется ли возможность назначить в коде VBA нижнюю границу диапазона столбца так, чтобы она плавала. В "тело" диапазона будут добавляться строки. Тобеш сейчас у нас диапазон А6:А118, а через минут 5 будет А6:А354.

Автор - denizen
Дата добавления - 06.07.2011 в 23:30
Саня Дата: Четверг, 07.07.2011, 17:47 | Сообщение № 16
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Code
"А6:А" & cells(rows.count,1).end(xlup).row


ниже диапазона не д.б. ничего
 
Ответить
Сообщение
Code
"А6:А" & cells(rows.count,1).end(xlup).row


ниже диапазона не д.б. ничего

Автор - Саня
Дата добавления - 07.07.2011 в 17:47
denizen Дата: Вторник, 12.07.2011, 18:51 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Set r = Range("D6:vah")
For i = 6 To r.Rows.Count

If Cells(i, 10).HasFormula And IsEmpty(Cells(i, 4)) Then
MsgBox ("èìååòñÿ ïóñòàÿ ÿ÷åéêà")
Else
Cancel = True
End If
Next
End Sub

вот такой макрос вышел....
тобеш задал конечную плавающую ячейку с именем вах, выходит что обрабатываем наш столбец от 6 строки и до вах.
проверяем на наличие формулы в другом столбце итой строки, формула есть проверяем нашу итую ячейку столбца Д на наличие данных. Данных нет-сообщение и не даем сохраниться.
иначе разрешаем сохраниться.
Вроде все должно работать, но файл вообще нельзя сохранить! вместо иначе было условие если , в точности как первое, но стояло нот эмпти...

помогите плиз, что нужно изменить или что добавить...
 
Ответить
СообщениеPrivate Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Set r = Range("D6:vah")
For i = 6 To r.Rows.Count

If Cells(i, 10).HasFormula And IsEmpty(Cells(i, 4)) Then
MsgBox ("èìååòñÿ ïóñòàÿ ÿ÷åéêà")
Else
Cancel = True
End If
Next
End Sub

вот такой макрос вышел....
тобеш задал конечную плавающую ячейку с именем вах, выходит что обрабатываем наш столбец от 6 строки и до вах.
проверяем на наличие формулы в другом столбце итой строки, формула есть проверяем нашу итую ячейку столбца Д на наличие данных. Данных нет-сообщение и не даем сохраниться.
иначе разрешаем сохраниться.
Вроде все должно работать, но файл вообще нельзя сохранить! вместо иначе было условие если , в точности как первое, но стояло нот эмпти...

помогите плиз, что нужно изменить или что добавить...

Автор - denizen
Дата добавления - 12.07.2011 в 18:51
denizen Дата: Вторник, 12.07.2011, 20:05 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Set r = Range("D6:vah")
For i = 6 To r.Rows.Count

If Cells(i, 10).HasFormula And IsEmpty(Cells(i, 4)) Then
MsgBox ("èìååòñÿ ïóñòàÿ ÿ÷åéêà")
End If
Next

Set r = Range("D6:vah")
For i = 6 To r.Rows.Count

If Cells(i, 10).HasFormula And Not IsEmpty(Cells(i, 4)) Then
Cancel = True
End If
Next

End Sub

разделил на 2 отдельных условия, в первый раз все прошло отлично: не давал сохранить с пустыми ячейками в проверяемом диапазоне, но давал сохранить файл при условии что нет пустых ячеек в нашем диапазоне. Но после успешного сохранения и повторном входе в файл опять все вернулось на круги своя........ cry
 
Ответить
СообщениеPrivate Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Set r = Range("D6:vah")
For i = 6 To r.Rows.Count

If Cells(i, 10).HasFormula And IsEmpty(Cells(i, 4)) Then
MsgBox ("èìååòñÿ ïóñòàÿ ÿ÷åéêà")
End If
Next

Set r = Range("D6:vah")
For i = 6 To r.Rows.Count

If Cells(i, 10).HasFormula And Not IsEmpty(Cells(i, 4)) Then
Cancel = True
End If
Next

End Sub

разделил на 2 отдельных условия, в первый раз все прошло отлично: не давал сохранить с пустыми ячейками в проверяемом диапазоне, но давал сохранить файл при условии что нет пустых ячеек в нашем диапазоне. Но после успешного сохранения и повторном входе в файл опять все вернулось на круги своя........ cry

Автор - denizen
Дата добавления - 12.07.2011 в 20:05
RAN Дата: Вторник, 12.07.2011, 22:20 | Сообщение № 19
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Макрос в переводе на русский язык
В строках от 6 до строки с ячейкой vah
1 цикл: если в ячейке i,10 формула, а ячейка i,4 пустая - кричим "Караул!"
2 цикл: если в ячейке i,10 формула, а ячейка i,4 не пустая - отменяем сохранение
конец макроса

Так и не понял, что надо было? Как оно работало? surprised biggrin


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМакрос в переводе на русский язык
В строках от 6 до строки с ячейкой vah
1 цикл: если в ячейке i,10 формула, а ячейка i,4 пустая - кричим "Караул!"
2 цикл: если в ячейке i,10 формула, а ячейка i,4 не пустая - отменяем сохранение
конец макроса

Так и не понял, что надо было? Как оно работало? surprised biggrin

Автор - RAN
Дата добавления - 12.07.2011 в 22:20
denizen Дата: Среда, 13.07.2011, 15:47 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

RAN,
Что должно делать, выше описано:)
проблема в том что невнимательно код составлен... точнее неумело:)
все поправил, теперь работает как нужно:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Set r = Range("D6:vah")
For i = r.Row To r.Row + r.Rows.Count - 1
If Cells(i, 10).HasFormula And IsEmpty(Cells(i, 4)) Then
Cancel = True
MsgBox ("èìååòñÿ ïóñòàÿ ÿ÷åéêà")
Exit Sub
End If
Next

End Sub
 
Ответить
СообщениеRAN,
Что должно делать, выше описано:)
проблема в том что невнимательно код составлен... точнее неумело:)
все поправил, теперь работает как нужно:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Set r = Range("D6:vah")
For i = r.Row To r.Row + r.Rows.Count - 1
If Cells(i, 10).HasFormula And IsEmpty(Cells(i, 4)) Then
Cancel = True
MsgBox ("èìååòñÿ ïóñòàÿ ÿ÷åéêà")
Exit Sub
End If
Next

End Sub

Автор - denizen
Дата добавления - 13.07.2011 в 15:47
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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