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

Вход

Регистрация

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

 

= Мир MS Excel/Запрет перехода на другой лист при наличии пустых ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Запрет перехода на другой лист при наличии пустых ячеек
Ученик Дата: Суббота, 13.04.2013, 18:40 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте!
Можно ли в Excel запретить переход с одного листа книги на другой,если в текущем листе имеются пустые(незаполненные) ячейки,которые обязательно должны быть заполнены. И ячейки эти из определенного диапазона, а может быть даже и нескольких разрозненных диапазонов (т.е. то тут несколько ячеек, то в другом месте). Возможно ли такое организовать в принципе и посредством чего? Надеюсь, вопрос в прикреплении примера не нуждается.
 
Ответить
СообщениеЗдравствуйте!
Можно ли в Excel запретить переход с одного листа книги на другой,если в текущем листе имеются пустые(незаполненные) ячейки,которые обязательно должны быть заполнены. И ячейки эти из определенного диапазона, а может быть даже и нескольких разрозненных диапазонов (т.е. то тут несколько ячеек, то в другом месте). Возможно ли такое организовать в принципе и посредством чего? Надеюсь, вопрос в прикреплении примера не нуждается.

Автор - Ученик
Дата добавления - 13.04.2013 в 18:40
Serge_007 Дата: Суббота, 13.04.2013, 18:58 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Средствами Excel не получится. С помощью VBA - можно
Попробуйте во вложении перейти на Лист2. Пока в ячейке А1 Листа1 у Вас будет пусто - перейти на Лист2 не получится
К сообщению приложен файл: Stud.xls (34.0 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеСредствами Excel не получится. С помощью VBA - можно
Попробуйте во вложении перейти на Лист2. Пока в ячейке А1 Листа1 у Вас будет пусто - перейти на Лист2 не получится

Автор - Serge_007
Дата добавления - 13.04.2013 в 18:58
Ученик Дата: Суббота, 13.04.2013, 19:23 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Так-то получается,но можно ли чтобы имя листа в коде изменялось, извлекаясь из названия листа. Потому что,если листов много для каждого прописывать сложновато, они по шаблону создаются,у каждого свое имя. Имеет смысл прописать код в шаблоне, извлекая имя листа? Как быть, если на "незаполненность" проверяется диапазон ячеек? Т.е. код нужно модифицировать следующим образом:
[vba]
Код
If Sheets("Текущий лист").Range("Диапазон ячеек") = "" Then Sheets("Текущий лист").Activate
[/vba]
 
Ответить
СообщениеТак-то получается,но можно ли чтобы имя листа в коде изменялось, извлекаясь из названия листа. Потому что,если листов много для каждого прописывать сложновато, они по шаблону создаются,у каждого свое имя. Имеет смысл прописать код в шаблоне, извлекая имя листа? Как быть, если на "незаполненность" проверяется диапазон ячеек? Т.е. код нужно модифицировать следующим образом:
[vba]
Код
If Sheets("Текущий лист").Range("Диапазон ячеек") = "" Then Sheets("Текущий лист").Activate
[/vba]

Автор - Ученик
Дата добавления - 13.04.2013 в 19:23
ikki Дата: Суббота, 13.04.2013, 20:36 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Цитата (Ученик)
можно ли

и что Вам мешает?
К сообщению приложен файл: 0070092.xls (46.0 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Цитата (Ученик)
можно ли

и что Вам мешает?

Автор - ikki
Дата добавления - 13.04.2013 в 20:36
Ученик Дата: Суббота, 13.04.2013, 20:49 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Скудные знания VBA останавливают.

[vba]
Код
Option Explicit

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
   Dim r As Range
   For Each r In Sh.[Rng].Cells
     If IsEmpty(r) Then Sh.Activate: Exit Sub
   Next
End Sub
[/vba]
Это весь код?Как?Как вычисляются пустые ячейки, которые должны быть заполнены?никаких диапазонов wacko я в недоумении.
 
Ответить
СообщениеСкудные знания VBA останавливают.

[vba]
Код
Option Explicit

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
   Dim r As Range
   For Each r In Sh.[Rng].Cells
     If IsEmpty(r) Then Sh.Activate: Exit Sub
   Next
End Sub
[/vba]
Это весь код?Как?Как вычисляются пустые ячейки, которые должны быть заполнены?никаких диапазонов wacko я в недоумении.

Автор - Ученик
Дата добавления - 13.04.2013 в 20:49
ikki Дата: Суббота, 13.04.2013, 20:55 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
нет, блин, половина кода спрятана у меня в сейфе biggrin

в книге на каждом листе определено имя rng
уровня листа.
ссылающееся на соответствующий диапазон (в т.ч. разрывный) ячеек (или одну ячейку).
для удобства эти диапазоны сейчас на листах имеют заливку.
но это необязательно.

макрос вызывается при деактивации любого листа.
перебирает все ячейки диапазона [rng]
как только попадается хотя бы одна пустая - заново активирует лист и заканчивает работу.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениенет, блин, половина кода спрятана у меня в сейфе biggrin

в книге на каждом листе определено имя rng
уровня листа.
ссылающееся на соответствующий диапазон (в т.ч. разрывный) ячеек (или одну ячейку).
для удобства эти диапазоны сейчас на листах имеют заливку.
но это необязательно.

макрос вызывается при деактивации любого листа.
перебирает все ячейки диапазона [rng]
как только попадается хотя бы одна пустая - заново активирует лист и заканчивает работу.

Автор - ikki
Дата добавления - 13.04.2013 в 20:55
Ученик Дата: Суббота, 13.04.2013, 23:48 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

теперь понятно,очень даже, все работает. но вот возникла новая проблема, добавила в книгу обычный пустой лист. и если в листах с rng есть пустые ячейки ни на этот лист,ни с него на ранее имеющиеся листы не переходит. даже когда все ячейки из rng заполнены, попытка перехода с нового добавленного листа на листы с rng - ошибка. выдается одна и та же ошибка: Object required. почему так никак не пойму,можно ли это как-то устранить?
 
Ответить
Сообщениетеперь понятно,очень даже, все работает. но вот возникла новая проблема, добавила в книгу обычный пустой лист. и если в листах с rng есть пустые ячейки ни на этот лист,ни с него на ранее имеющиеся листы не переходит. даже когда все ячейки из rng заполнены, попытка перехода с нового добавленного листа на листы с rng - ошибка. выдается одна и та же ошибка: Object required. почему так никак не пойму,можно ли это как-то устранить?

Автор - Ученик
Дата добавления - 13.04.2013 в 23:48
ikki Дата: Суббота, 13.04.2013, 23:53 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
а на новом листе определено локальное имя rng?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеа на новом листе определено локальное имя rng?

Автор - ikki
Дата добавления - 13.04.2013 в 23:53
Ученик Дата: Суббота, 13.04.2013, 23:55 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Ученик
Дата добавления - 13.04.2013 в 23:55
ikki Дата: Воскресенье, 14.04.2013, 00:20 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
подскажите, где в
Цитата (Ученик)
запретить переход с одного листа книги на другой

(из первого поста) об этом сказано?

ну, например, можно так:
[vba]
Код
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
      Dim r As Range
      On Error GoTo ex
      For Each r In Sh.[rng].Cells
          If IsEmpty(r) Then Sh.Activate: Exit Sub
      Next
ex:
End Sub
[/vba]

[offtop]
Цитата (Ученик)
добавила
гм...
"Как вы яхту назовёте..."
Юля, ну зачем Вы выбрали такой ник? smile [/offtop]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Воскресенье, 14.04.2013, 00:32
 
Ответить
Сообщениеподскажите, где в
Цитата (Ученик)
запретить переход с одного листа книги на другой

(из первого поста) об этом сказано?

ну, например, можно так:
[vba]
Код
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
      Dim r As Range
      On Error GoTo ex
      For Each r In Sh.[rng].Cells
          If IsEmpty(r) Then Sh.Activate: Exit Sub
      Next
ex:
End Sub
[/vba]

[offtop]
Цитата (Ученик)
добавила
гм...
"Как вы яхту назовёте..."
Юля, ну зачем Вы выбрали такой ник? smile [/offtop]

Автор - ikki
Дата добавления - 14.04.2013 в 00:20
Ученик Дата: Воскресенье, 14.04.2013, 00:55 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Не была уверена в том,что понадобится этот лист. Спасибо за ценнейшие советы!!!


не рубите на корню мои самые благие намерения.учиться ведь никогда не поздно,особенно,если учителя хорошие;)
 
Ответить
СообщениеНе была уверена в том,что понадобится этот лист. Спасибо за ценнейшие советы!!!


не рубите на корню мои самые благие намерения.учиться ведь никогда не поздно,особенно,если учителя хорошие;)

Автор - Ученик
Дата добавления - 14.04.2013 в 00:55
  • Страница 1 из 1
  • 1
Поиск:

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