Прошу помочь в решении ситуации. Дело в том, что имеется файл общего доступа с данными. Есть потребность НЕ сохранять файл с пустыми ячейками в определенном столбце, кол-во строк варьируется в течении дня (добавляются новые, удаляются ненужные). Пользователи очищают значения в ячейках "нашего" столбца (необходимость рабочего процесса) , но не сохраняют. Точнее не должны сохранять, исключения не редкость... Пользователи оперируют с данными в строке напротив пустой ячейки, а после заполняют ее и сохраняются. Так как же не допустить случайного сохранения файла при пустых ячейках определенного столбца? Диапазон столбца начинается от 6 строки, а конечная строка варьируется.
Макрос использовать нельзя.
Доброго времени суток!
Прошу помочь в решении ситуации. Дело в том, что имеется файл общего доступа с данными. Есть потребность НЕ сохранять файл с пустыми ячейками в определенном столбце, кол-во строк варьируется в течении дня (добавляются новые, удаляются ненужные). Пользователи очищают значения в ячейках "нашего" столбца (необходимость рабочего процесса) , но не сохраняют. Точнее не должны сохранять, исключения не редкость... Пользователи оперируют с данными в строке напротив пустой ячейки, а после заполняют ее и сохраняются. Так как же не допустить случайного сохранения файла при пустых ячейках определенного столбца? Диапазон столбца начинается от 6 строки, а конечная строка варьируется.
denizen, здравствуйте на сегодняшний день нет формульного запрета на сохранение. Как вариант можно высветить предупреждение "Необходимо заполнить синий столбец" И только когда весь синий столбец будет заполнен, тогда эта надпись сменится на " Теперь можно сохранять". Если вас устраивает "предупреждение" - тогда таблицу в студию. В противном случае - только VBA
denizen, здравствуйте на сегодняшний день нет формульного запрета на сохранение. Как вариант можно высветить предупреждение "Необходимо заполнить синий столбец" И только когда весь синий столбец будет заполнен, тогда эта надпись сменится на " Теперь можно сохранять". Если вас устраивает "предупреждение" - тогда таблицу в студию. В противном случае - только VBA0mega
Сорри, не довел мысль до конца:) без макроса конечно нельзя никакого окна вывести итд... но ведь можно с помощью формулы не дать ячейке пустовать. Уточню: очищаются ячейки и попорядку и с перескоками. С помощью Данные-Проверка можно не дать остаться 1 пустой ячейке и то только если она будет не просто выделена, а находиться в режиме ввода текста.
Сорри, не довел мысль до конца:) без макроса конечно нельзя никакого окна вывести итд... но ведь можно с помощью формулы не дать ячейке пустовать. Уточню: очищаются ячейки и попорядку и с перескоками. С помощью Данные-Проверка можно не дать остаться 1 пустой ячейке и то только если она будет не просто выделена, а находиться в режиме ввода текста.denizen
Формула не запретит сохраниться, это само собой. А возможен ли вариант с помощью формулы сделать так, что если мы выделив нужные ячейки, очищаем их содержимое и когда переходим на любую другую ячейку наши пустующие ячейки заполняются??? к примеру ячейка вне таблицы=ЕСЛИ($А1="";33) и потом ссылка чтобы А1="" =33
или А1 сразу после очистки будет заполнена значением 33 ???
в целях рабочего процесса ячейки должны некоторое время оставаться пустыми
Формула не запретит сохраниться, это само собой. А возможен ли вариант с помощью формулы сделать так, что если мы выделив нужные ячейки, очищаем их содержимое и когда переходим на любую другую ячейку наши пустующие ячейки заполняются??? к примеру ячейка вне таблицы=ЕСЛИ($А1="";33) и потом ссылка чтобы А1="" =33
или А1 сразу после очистки будет заполнена значением 33 ???
в целях рабочего процесса ячейки должны некоторое время оставаться пустымиdenizen
А зачем? Всё-равно файл закрыть до выполнения заданного условия невозможно.
это я понимаю,но доступ общий и если кто-то сохранится то следующий пользователь обновит в скором времени этот файл - увидит добавления нужные ему, начнет с ними работать и захватит те где пустые ячейки, которые другой очистил для работы с ними и сохранился. следует трата времени на возвращение к первоначальному этапу потому необходимо заблокировать Save при пустых ячеках определенного столбца ... диапазон не на весь столбец и его "высота" варьируется.
Quote (Serge_007)
А зачем? Всё-равно файл закрыть до выполнения заданного условия невозможно.
это я понимаю,но доступ общий и если кто-то сохранится то следующий пользователь обновит в скором времени этот файл - увидит добавления нужные ему, начнет с ними работать и захватит те где пустые ячейки, которые другой очистил для работы с ними и сохранился. следует трата времени на возвращение к первоначальному этапу потому необходимо заблокировать Save при пустых ячеках определенного столбца ... диапазон не на весь столбец и его "высота" варьируется.denizen
Serge_007, Спасибо за отличную подсказку, будем пробовать... хочу только уточнить: имеется ли возможность назначить в коде VBA нижнюю границу диапазона столбца так, чтобы она плавала. В "тело" диапазона будут добавляться строки. Тобеш сейчас у нас диапазон А6:А118, а через минут 5 будет А6:А354.
Serge_007, Спасибо за отличную подсказку, будем пробовать... хочу только уточнить: имеется ли возможность назначить в коде VBA нижнюю границу диапазона столбца так, чтобы она плавала. В "тело" диапазона будут добавляться строки. Тобеш сейчас у нас диапазон А6:А118, а через минут 5 будет А6:А354.denizen
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
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 отдельных условия, в первый раз все прошло отлично: не давал сохранить с пустыми ячейками в проверяемом диапазоне, но давал сохранить файл при условии что нет пустых ячеек в нашем диапазоне. Но после успешного сохранения и повторном входе в файл опять все вернулось на круги своя........
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 отдельных условия, в первый раз все прошло отлично: не давал сохранить с пустыми ячейками в проверяемом диапазоне, но давал сохранить файл при условии что нет пустых ячеек в нашем диапазоне. Но после успешного сохранения и повторном входе в файл опять все вернулось на круги своя........ denizen
Макрос в переводе на русский язык В строках от 6 до строки с ячейкой vah 1 цикл: если в ячейке i,10 формула, а ячейка i,4 пустая - кричим "Караул!" 2 цикл: если в ячейке i,10 формула, а ячейка i,4 не пустая - отменяем сохранение конец макроса
Так и не понял, что надо было? Как оно работало?
Макрос в переводе на русский язык В строках от 6 до строки с ячейкой vah 1 цикл: если в ячейке i,10 формула, а ячейка i,4 пустая - кричим "Караул!" 2 цикл: если в ячейке i,10 формула, а ячейка i,4 не пустая - отменяем сохранение конец макроса
Так и не понял, что надо было? Как оно работало? RAN
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