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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2009, 00:41   #1
Legame
Пользователь
 
Регистрация: 03.02.2008
Сообщений: 32
По умолчанию Конфигуратор с динамическими данными и списками

Добрый вечер,

Передо мной стоят следующие задачи в экселе, совсем не знаю как их реализовать! просьба помочь

прилагаю кусок файла с более подробным описанием внутри.
возможно, где-то ошибся или перемудрил, возможно у вас есть более лучшее предложение.

Задачи:
0. Защита листа основного и скрытие дополнительных листов
0.1. Скрытие и защита листов от "чужих глаз"
0.2. Защита основного листа от модификаций итд, кроме как выбора параметров в разрешенных ячейках
0.3. Защита текста макросов от глаз "опытных пользователей"


1. Обнулять выбранные параметры в ячейках (которые выделены цветом, т.е. доступны для модификации)
1.1. Обнуление в ячейках при открытии файла
1.2. Обнуление в ячейках по нажатию на кнопку "ОЧИСТИТЬ"
1.3. Обнуление в ячейках по выбору основополагающих параметров.


2. Выбор параметров должен происходить динамически из соответствующих списков.


P.S. Заранее огромное спасибо всем откликнувшимся!
Вложения
Тип файла: rar configurator.rar (13.2 Кб, 47 просмотров)
Legame вне форума Ответить с цитированием
Старый 26.08.2009, 02:12   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Вставить следующий код в редакторе VBA:

1.1. При открытии книги обнуляем нужные ячейки.
Код:
Private Sub Workbook_Open()
Range("B6").Value = ""
Range("C6").Value = ""
Range("D6").Value = ""
Range("B7").Value = ""
Range("D7").Value = ""
Range("B8").Value = ""
Range("D8").Value = ""

End Sub
1.2. Создаем кнопку "Очистить" и в ее обработчике пишем код:

Код:
Sub Очистить()
Range("B6").Value = ""
Range("C6").Value = ""
Range("D6").Value = ""
Range("B7").Value = ""
Range("D7").Value = ""
Range("B8").Value = ""
Range("D8").Value = ""
End Sub
1.3. В обработчик Worksheet_Change для первого листа вставляем (проверяет адрес измененной ячейки + условия и обнуляет нужные):

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Address = "$B$6") Then
Range("C6").Value = ""
Range("D6").Value = ""
Range("B7").Value = ""
Range("B8").Value = ""
Range("D8").Value = ""
Range("D9").Value = ""

End If
If (Target.Address = "$C$6" And Range("B6").Value <> "") Then
Range("D6").Value = ""
Range("B7").Value = ""
Range("D7").Value = ""
Range("B8").Value = ""
Range("D8").Value = ""
Range("D9").Value = ""

End If
If (Range("B6").Value <> "" And Range("C6").Value <> "" And Target.Address = "$B$7") Then
Range("D7").Value = ""
Range("B8").Value = ""
Range("D8").Value = ""
Range("D9").Value = ""

End If
If (Range("B6").Value <> "" And Range("C6").Value <> "" And Range("B7").Value <> "" And Target.Address = "$B$8") Then
Range("D8").Value = ""
Range("D9").Value = ""

End If

End Sub

Последний раз редактировалось motorway; 26.08.2009 в 02:15.
motorway вне форума Ответить с цитированием
Старый 26.08.2009, 22:44   #3
Legame
Пользователь
 
Регистрация: 03.02.2008
Сообщений: 32
По умолчанию

Motorway, спасибо огромное!

а сможете помочь с задачами 0.1, 0.2, 0.3 ?
Legame вне форума Ответить с цитированием
Старый 26.08.2009, 23:08   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Поясните, что имеется в виду под 0.1 и 0.3? Если есть файл Эксел, то прочесть, какой в нем макрос, легко. 0.2 сделать легче, но, вероятно, пользователь сможет это отключить в коде. То есть, если цель - просто чтобы не вводились неправильные данные, это можно сделать, но если пользователь полезет в код, чтобы это отключить, то еще надо подумать
Вообще, один из способов - поместить данные на сервер в БД. Тогда до них добраться будет сложнее

Последний раз редактировалось motorway; 26.08.2009 в 23:32.
motorway вне форума Ответить с цитированием
Старый 12.09.2009, 21:00   #5
Legame
Пользователь
 
Регистрация: 03.02.2008
Сообщений: 32
По умолчанию фильтрация списка по определенному критерию

Подскажите еще, пожалуйста,

Возможно ли организовать динамический список на основе некоего фильтра???
например, при наличии галки в CHECKBOX статус "НА СКЛАДЕ" - в этом случае происходит вывод только тех позиций, которые являются складскими(столбец на листе prices)

установив статус НА СКЛАДЕ - нужно сократить список выпадающих позиций, т.е. считаем, что товар есть на складе, если в соответствущей строке позиции в столбце СКЛАД = "число" или "+"

список выбора Реализован при помощи функции ДВССЫЛ
Legame вне форума Ответить с цитированием
Старый 13.09.2009, 17:57   #6
Legame
Пользователь
 
Регистрация: 03.02.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Legame Посмотреть сообщение
Подскажите еще, пожалуйста,

Возможно ли организовать динамический список на основе некоего фильтра???
например, при наличии галки в CHECKBOX статус "НА СКЛАДЕ" - в этом случае происходит вывод только тех позиций, которые являются складскими(столбец на листе prices)

установив статус НА СКЛАДЕ - нужно сократить список выпадающих позиций, т.е. считаем, что товар есть на складе, если в соответствущей строке позиции в столбце СКЛАД = "число" или "+"

список выбора Реализован при помощи функции ДВССЫЛ
забыл вложить файл...
Вложения
Тип файла: rar configurator.rar (14.9 Кб, 64 просмотров)
Legame вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с динамическими массивами _grusha_ Помощь студентам 2 22.04.2009 19:46
Конфигуратор служб Баламут Софт 3 18.03.2009 01:54
Проблема с динамическими массивами Arassir Помощь студентам 2 11.11.2008 00:15
Задача с динамическими переменными shorox Паскаль, Turbo Pascal, PascalABC.NET 3 08.11.2008 15:32
Работа с динамическими переменными DonLena Фриланс 4 15.10.2008 18:13