0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 4
1

Динамическое изменение листа при переключении между контролами на этом же листе

22.05.2012, 19:49. Показов 1821. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые КиберПрофи!
Прошу не бейте тапками бедную девушку, мне и так досталось от VBA, потому что я возможно повторюсь с вопросом заданным неоднократно... Ну и за то, что так много букафф...
Инет облазила вдоль и поперек - не первый день вопрос ребром!
ВСЕ ПОЛНОСТЬЮ ЗА МЕНЯ ПИСАТЬ НЕ НУЖНО, А ЗА ЛЮБУЮ ПОМОЩЬ ИЛИ ИДЕЮ СПАСИБО ЗАРАНЕЕ
Объясню суть
Проект: Интерфейс и вся обработка в Excel 2010 c поддержкой макросов. БД в Access 2010.
Нужно реализовать просмотр справочников (там справочник Городов, улиц, сотрудников и т.д.) Их много и они разные - отличаются, естественно, количеством информации в них, то есть полей: в одних только код и название, в других - еще масса доп. инфы. Не суть важно.
В идеале был бы вариант в верхней части листа - ввод, просмотр и редактирование записей с помощью текстовых полей, выпадающих списков, флажков и т.п. Кнопки - автофигуры, но можно и обычные. В нижней части - динамическая таблица, которая изменяется сразу после ввода данных в определенное поле или на крайний случай - по кнопке. Естественно в БД тоже все меняется автоматически. Переключение между справочниками любое от меню до гиперссылок, можно даже какие-нить вкладки - тут все равно. А ТЕПЕРЬ САМА ПРОБЛЕМА ума не прилажу как обновлять один и тот же лист под определенный справочник, я имею ввиду подмену контролов и таблицы соответственно. Может знаете какие нибудь примеры самые элементарные (мне бы принцип работы такой динамики понять) Например:
- первый справочник: текстовое поле: ввод - Таблица: вставка в ячейку - БД: изменение записей
- любой другой справочник - другие контролы, другая таблица НА ЭТОМ ЖЕ САМОМ ЛИСТЕ И ВСЕ ДИНАМИЧЕСКИ!!! (По поводу БД сразу скажу - коннектиться нужно программно, а не средствами Excel-Access, нужен универсальный интерфейс подключения, т.к. возможен переход на СУБД SQL Server 2008)
Пробовала такие варианты:
1. непосредственно на листе - интерфейс "умная таблица" - не получилось - не смогла разобраться с программированием этой самой таблицы (Какой это объект? Как выполняется обработка событий, внедрение в ее ячейки контролов типа ComboBox или CheckBox, добавление, удаление вставка записей, запрет пользователю редактирования определенных полей... - в общем никак.Переход по справочникам - выпадающий список. Работа с записями по приципу DataForm (формы данных)
2. Пробовала вставить МultiPage прямо на лист (для переключения между справочниками (удобно очень) верх оформила как и на листе контролами, а с низом стала проблема где взять контрол Таблица типа DataGrid? Было 2 варианта (опять же с помощью инета) a) MS FlexGrid и в старом и в новом варианте. Но только он не устанавливается - говорит что моя система не та Your system has not been modified[Windows7]; б) Spreadsheet. Этот контрол поддерживается, Но ограничить нужное количество строк с столбцов весьма проблематично - только с помощью защиты нужной области. Вроде в справке написано, что почти все свойства и методы этого чуда такие как и у обычной экселевской таблицы. Но при выполнении такого кода ругается матом
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Spreadsheet1_DblClick()
'  если объявить вот так  
    Dim currentRange As Range
    Set currentRange = ActiveSheet.Cells.CurrentRegion '<- здесь Run time error 13 Несовпадение типов
      currentRange.Offset(1, 0).Resize(currentRange.Rows.Count - 1, currentRange.Columns.Count).Select
...
End Sub
 
Private Sub Spreadsheet1_DblClick()
'  а если объявить вот так  
    Dim currentRange As Object
    Set currentRange = ActiveSheet.CurrentRegion '<- тогда здесь ест и не давится
    currentRange.Offset(1, 0).Resize(currentRange.Rows.Count - 1, currentRange.Columns.Count).Select '<- зато тут орет благим матом Run time 1004 application-defined or object-defined error
...
End Sub
 
Private Sub Spreadsheet1_DblClick()
    
    Dim currentRange As Object
    Set currentRange = Spreadsheet1.ActiveCell.CurrentRegion 'если так  то здесь  Run time  438  Object doesn't support   this property or method 
    currentRange.Offset(1, 0).Resize(currentRange.Rows.Count - 1, currentRange.Columns.Count).Select
 
End Sub
Как внедрить контролы в нее я тоже не знаю, хотелось бы , чтобы логические поля не писали TRUE или FALSE, а нормальные флажки стояли. Дальше хуже - как обращаться к данным в таблице не понятно. Если копировать ее на скрытый новый лист рабочей книги - это безумно долго 140 записей выгружает минут 5, а что будет если их будет не одна тысяча? а напрямую в SpreadSheet как? Он даже область выделить не может нужную. (или я не могу)
Вообщем, дорогие форумчане не буду дальше нагружать а просто попрошу помощи - любая инфа или мысли по теме для меня оч. Нужны
Всем откликнувшимся СПАСИБО
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2012, 19:49
Ответы с готовыми решениями:

Заполнение 2 листа данными из 3-го листа при событии на 1-м листе
Уважаемые форумчане, добрый вечер! Бьюсь челом и молю о помощи с решением задачи! Задача очень...

Динамическое изменение данных на листе
Как реализовать то что показана на листе &quot;Галерея&quot;?

Изменение фона TabControl при переключении
Добрый день, как переключать фон TabItem при переключении между ними. Например при активном...

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

6
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 4
24.05.2012, 11:37  [ТС] 2
Граждане, уважаемые. Пол-суток прошло, ну подскажите хоть что-нибудь...

Как в таблицу в определенные ячейки вставить контролы - это по поводу того чтобы вместо true-false в столбце стоял checkbox
как при переключении ну например по элементам combobox -а обновлять текущий лист с другими контролами и таблицей

Добавлено через 14 часов 41 минуту
Цитата Сообщение от Nika.dn Посмотреть сообщение
Граждане, уважаемые. Пол-суток прошло, ну подскажите хоть что-нибудь...

Как в таблицу в определенные ячейки вставить контролы - это по поводу того чтобы вместо true-false в столбце стоял checkbox
Нормально сама себе отвечаю...
Видно плохо рыла носом... Нашла ответ на этот вопрос у Мастера-гуру EducatedFool. Поистине МАСТЕР своего дела (Это ж надо додуматься обычным шрифтом галочки в ячейках проставлять - а как все до банального просто. Оч. хочется выучиться до Вашего уровня, Мастер
ОГРОМНОЕ ВАМ СПАСИБО - Вы ответили на мой вопрос, не отвечая.
Еще бы кто подсказал ответ на второй вопрос...
Ладно, буду пока рыть дальше, может опять нарою, что мне нужно. Все равно ВСЕ молчат
0
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
24.05.2012, 16:38 3
Nika.dn, так много букв, так не просто разобраться... Нельзя ли как-нибудь выделить главные 2-3 предложения тэгами [b], хотя бы?
0
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 4
24.05.2012, 19:26  [ТС] 4
Можно я цитатами как-нить..
Объясню суть
Проект: Интерфейс и вся обработка в Excel 2010 c поддержкой макросов. БД в Access 2010.
Нужно реализовать просмотр справочников на одном и том же листе.
В верхней части листа - контролы для работы со справочниками. В нижней части - динамическая таблица, которая изменяется сразу после ввода данных в определенное поле или на крайний случай - по кнопке. B БД тоже все меняется при изменении в таблице. ... А ТЕПЕРЬ САМА ПРОБЛЕМА: как обновлять один и тот же лист, выбрав тот или иной справочник, контролы и таблица предыдущего справочника, который был отображен до этого заменяются на контролы и таблицу вновь выбранного справочника соответственно. Выбор того или иного справочника находится либо в меню "Сравочники", либо в combobox на ЭТОМ ЖЕ САМОМ листе. (скорее всего через меню сделаю)

Всем откликнувшимся СПАСИБО
P.S. Алгоритм как это сделать я знаю, у меня проблема именно с кодом VBA...
0
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
25.05.2012, 09:17 5
"обновлять один и тот же лист" - т.е. вы хотите загружать новые данные на этот лист? Ну, тогда, видимо, надо в обработке события ComboBox_Change написать процедуру обновления данных. Я правильно понял?
0
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 4
25.05.2012, 18:48  [ТС] 6
Да, именно так. Тока не знаю как. Хотя бы на одном контроле и 1 столбце таблицы покажите, пожалуйста
0
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
28.05.2012, 16:01 7
Nika.dn, извините, я в объектной модели Access не ориентируюсь =(
У вас ведь таблица в Access?

Добавлено через 49 минут
Если хочется сделать универсально (назависимо от конкретной базы данных), то надо делать через драйвер БД. В виндузе есть ODBC. Кажется он встроенный, но по умолчанию не включен. Я бы на вашем месте погуглил запросом "ODBC Excel", или что-то вроде того
0
28.05.2012, 16:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2012, 16:01
Помогаю со студенческими работами здесь

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

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

Ошибка при переключении между формами
Здравствуйте, уважаемые форумчане! Столкнулся вот с такой проблемой: Происходит это...

Заставить кнопку на листе Excel не перемещаться при прокрутке листа
Извините, еще один ламерский вопрос - можно ли сделать так, чтобы кнопочка, находящаяся на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru