Excel Показать данные на основе выбора пользователя - PullRequest
0 голосов
/ 28 ноября 2011

Excel 2007: Я получаю свои данные из таблиц Access, лист Excel называется «Данные». Ячейки моего отчета в Excel заполняются ссылками на эти ячейки данных (= Данные! A1), а некоторые ячейки отчета имеют простой код. Но мой вопрос заключается в следующем; В моем отчете должна быть указана одна запись. Пример: Запись данных 1: Имя = Джо, Рождение = 7/29/62, Страна = США: запись 2: Имя = Сэм, Рождение = 4/13/74, Страна = Китай ... Как мы контролируем отображение отчета к конкретной записи? Если я добавлю DropDown или ListBox, как мы будем делать только записи для выбранного имени в отчете. Есть ли способ поместить код за списком, или я должен удалить список и создать макрос, каков наилучший способ для пользователя выбрать данные для отображения в отчете? Предложения, пожалуйста ...

1 Ответ

2 голосов
/ 28 ноября 2011

Я бы использовал два подхода.

Когда вы встраиваете объект запроса в Excel (то есть, я полагаю, как вы извлекаете данные из Access), у вас есть возможность редактировать этот запрос в небольшом инструменте редактора запросов.Вы можете добавить критерии к этому запросу в этом инструменте - есть значок фильтра, вы выбираете, скажем, столбец «Имя», а затем вводите «Сэм» в поле ниже, и это будет производить оператор SQL, который теперь включает «Где имя =»То же самое "в конце.

Однако это не очень полезно для отчетов, поскольку, скорее всего, мы хотим, чтобы имя было параметром, передаваемым из самого листа Excel.Если в поле критерия ввести «[введите имя]» вместо «Сэм», квадратные скобки сообщают инструменту запроса, что это пользовательский параметр.Теперь, когда вы запускаете запрос из инструмента, вы получаете всплывающее окно, каждый раз запрашивающее у вас имя.

Теперь, когда вы выходите из инструмента запросов и возвращаетесь в Excel, вы можете редактировать параметры запроса для этого встроенного объекта запроса.Указанный вами параметр (имя) существует, и он может принимать статическое значение, запрашивать у пользователя или принимать содержимое ячейки.Вы даже можете установить флаг для обновления запроса при изменении содержимого ячейки.

Другой подход идет немного дальше и манипулирует объектом запроса в некотором коде VBA.Например, если вам нужно выполнить более тяжелую работу или другую логику, и вы не хотите писать все это как формулы для электронных таблиц.Самый простой способ сделать это - вставить кнопку на листе отчета и запустить код VBA для события нажатия этой кнопки.

...