Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 05.10.2015, 01:11   #41
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Адрес: УКРАЇНА, Київ
Сообщений: 8,997
Репутация: 1710

icq: 7934250
skype: i2x0,5
По умолчанию

Цитата:
Вопрос 1. что должно служить толчком для системы, чтобы скрыть/показать строки на гипотетических 62 и даже более листах?
Ответ: В листе "расчёт стоимости", в ячейках выделенных жёлтым, вручную вносятся данные. Каждая ячейка подвязана под конкретный лист:
Ячейка I7, меняет данные в листе "1" в ячейке F30 (соответственно F30 - контролированная ячейка);
Ячейка I8, меняет данные в листе "2" в ячейке F30 (соответственно F30 - контролированная ячейка);
Ячейка I9, меняет данные в листе "3" в ячейке F40 (соответственно F40 - контролированная ячейка);
и т.д.
отлично! а подскажите мне темному, как пользователь изменит значение в защищенной ячейке на защищенном листе??????????????


valerij,
Цитата:
IgorGO, вы, что не можете чисто по теме ответить?
чисто по теме я ответил в сообщени #3
Цитата:
rows(r).hidden = cells(r,c) = 0
то, что программирование не твое понимаем не только ты и я, полагаю это понимают все на форуме.
твой совет решил проблему автора темы? зачем ты вообще встрял в тему? я, например не даю советов по выпечке и ее доставке в точки реализации потому что никогда с этим не сталкивался и ничего в этом не понимаю.

kvaavals
Тоесть, для листа "1":
r = 30 'Номер строки контролируемой ячейки
Для листа "2":
r = 30 'Номер строки контролируемой ячейки
Для листа "3":
r = 40 'Номер строки контролируемой ячейки

это я написал в своем вопросе:
Цитата:
судя по описанию для листа:
1 это ячейка R30C6?
2 - R30C6?
3 - R40C6?
повторю его:
как определить адрес ячейки для листов 4, 5, 6 ... 62 ... и дальше?

напоминаю, это последняя попытка.
600 просмотров - слишком много для темы ни о чем!
__________________
41001804815208 - Яндекс-деньги благодарности за удачные советы и решения можно отправлять прямо сюда)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 05.10.2015 в 07:36.
IgorGO вне форума   Ответить с цитированием
Старый 05.10.2015, 07:00   #42
SAS888
Профессионал
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,153
Репутация: 1063
По умолчанию

Посмотрите пример во вложении.
Листы "1", "2" и "3" защищены. Пароль "1234" для всех листов одинаковый.
В коде макроса прописаны 3 массива. Массив "List()" содержит имена тех листов в которых требуется скрывать (отображать) строки по условию. Массив "Stroka()" содержит номера строк, которые требуется скрывать (отображать) на соответствующих листах. Массив "Addr()" содержит адреса контролируемых ячеек соответствующих листов. Эти массивы синхронизированы, т. е. все элементы массива находятся в соответствии. Добавляйте (изменяйте) эти массивы по Вашим требованиям, соблюдая количество и порядок их элементов.
Если для разных листов требуется использовать разные пароли, то добавьте 4-ый массив,содержащий пароли, соблюдая соответствие его элементов порядку листов, а в коде макроса, при снятии и установке защиты текущего листа используйте строковую переменную.
Код:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Dim i As Integer, Stroka(), Addr(), List()
    Application.ScreenUpdating = False: Application.EnableEvents = False
    List = Array("1", "2", "3") 'Массив и сменами листов, в которых скрываем (отображаем) строки
    Stroka = Array(30, 30, 40) 'Массив с номерами скрываемых (отображаемых) строк
    Addr = Array("$F$30", "$F$30", "$F$40") 'Массив с адресами контролируемых ячеек
    For i = LBound(List) To UBound(List)
        With Sheets(CStr(List(i)))
            .Unprotect "1234"
            If .Range(Addr(i)) = 0 Then .Rows(Stroka(i)).Hidden = True Else .Rows(Stroka(i)).Hidden = False
            .Protect "1234"
        End With
    Next
    Application.ScreenUpdating = True: Application.EnableEvents = True
End Sub

Вложения
Тип файла: rar Експерементальный шаблон6.rar (46.3 Кб, 6 просмотров)
__________________
Чем шире угол зрения, тем он тупее.
SAS888 вне форума   Ответить с цитированием
Старый 05.10.2015, 10:57   #43
kvaavals
Пользователь
 
Регистрация: 29.09.2015
Сообщений: 23
Репутация: 10
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Посмотрите пример во вложении.
Листы "1", "2" и "3" защищены. Пароль "1234" для всех листов одинаковый.
В коде макроса прописаны 3 массива. Массив "List()" содержит имена тех листов в которых требуется скрывать (отображать) строки по условию. Массив "Stroka()" содержит номера строк, которые требуется скрывать (отображать) на соответствующих листах. Массив "Addr()" содержит адреса контролируемых ячеек соответствующих листов. Эти массивы синхронизированы, т. е. все элементы массива находятся в соответствии. Добавляйте (изменяйте) эти массивы по Вашим требованиям, соблюдая количество и порядок их элементов.
Если для разных листов требуется использовать разные пароли, то добавьте 4-ый массив,содержащий пароли, соблюдая соответствие его элементов порядку листов, а в коде макроса, при снятии и установке защиты текущего листа используйте строковую переменную.
Код:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Dim i As Integer, Stroka(), Addr(), List()
    Application.ScreenUpdating = False: Application.EnableEvents = False
    List = Array("1", "2", "3") 'Массив и сменами листов, в которых скрываем (отображаем) строки
    Stroka = Array(30, 30, 40) 'Массив с номерами скрываемых (отображаемых) строк
    Addr = Array("$F$30", "$F$30", "$F$40") 'Массив с адресами контролируемых ячеек
    For i = LBound(List) To UBound(List)
        With Sheets(CStr(List(i)))
            .Unprotect "1234"
            If .Range(Addr(i)) = 0 Then .Rows(Stroka(i)).Hidden = True Else .Rows(Stroka(i)).Hidden = False
            .Protect "1234"
        End With
    Next
    Application.ScreenUpdating = True: Application.EnableEvents = True
End Sub

Всё работает! Пока проверил на 3-х листах, буду пробовать дальше. Огромное спасибо!
kvaavals вне форума   Ответить с цитированием
Старый 08.10.2015, 11:38   #44
kvaavals
Пользователь
 
Регистрация: 29.09.2015
Сообщений: 23
Репутация: 10
По умолчанию

Ещё чуть поправил код SAS888, так как таблицы долго пересчитывались. Сейчас так сделано, что бы все таблицы были неактивны пока на них не перейдёшь. Так что сейчас всё ОТЛИЧНО работает!
Большое спасибо SAS888 за терпение )
kvaavals вне форума   Ответить с цитированием
Старый 14.09.2018, 17:07   #45
Wolfer42
Новичок
 
Регистрация: 14.09.2018
Сообщений: 1
Репутация: 10
По умолчанию

Спасибо.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long, c As Long, Stroka As Long
Stroka = 10 'Номер строки, которая должна скрываться (отображаться)
r = 1 'Номер строки контролируемой ячейки
c = 1 'Номер столбца контролируемой ячейки
Rows(Stroka).Hidden = Cells(r, c) = 0
End Sub

Работает =)
Wolfer42 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последовательное заполнение ячеек при помощи диалоговых окон, при определенном значении в определенной ячейке Inna2708 Microsoft Office Excel 5 10.11.2014 02:15
Как вставить строку в RichEdit в определённом месте? Евгений9 Общие вопросы Delphi 0 01.03.2014 11:11
Как скрыть строку при выполнении условия в другой ячейке Алексей777 Microsoft Office Excel 4 09.12.2010 11:06
Как добавить нужную строку в memo Volkogriz Общие вопросы Delphi 5 02.12.2008 23:38
Как найти нужную строку в ListBox? DelphiKettle Помощь студентам 2 05.09.2007 22:02


18:04.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru