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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.10.2008, 18:43   #1
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию создание базы данных через форму

Друзья помогите разобраться с кодом.
нашел описание программы



Как сделать раскрывающий список на форме?

Создается на ЛИСТе диалога Регистрация средствами панели инструментов Элементы управления (Forms). Напомним, что диалоговый лист создается командой Вставка, Макрос, Диалоговое окно (Insert, Macro, DialogSheet) (рис. 7.23). С помощью вкладки Элемент управления (Control) диалогового окна Форматирование объекта (Format Object) убедитесь в правильном назначении функций кнопкам диа¬логового окна.
Для работы с раскрывающимся списком на вспомогательном рабочем листе переменные в диапазон А1:АЗ с именем Типы_номеров вводим последова¬тельно типы номеров: люкс, одноместный, Двухместный. Ячейке А15 при¬сваиваем имя номер, а ячейке А14 — имя Тип_номера. Кроме того, в ячейку А14 вводим следующую формулу

ИНДЕКС(Типы_номеров;Номер;1)

Щелкнув список правой кнопкой мыши, с помощью контекстного меню вызовем диалоговое окно Форматирование объекта (Format Object). В поле Форматировать список по диапазону (Input Range) введем имя диапазона типы_номеров, а в поле Помещать результат в ячейку (Cell Link) введем имя
ЯЧеЙКИ Номер. Затем Назначим процедуру EnterData КНОПКе Ввод данных. Со счетчиком диалогового окна ввода данных свяжем процедуру Dospinner, выводящую в третье поле ввода текущее значение счетчика...

вставил формулу, но никак не могу найти форматирование объекта.

Прилагаю сам документ.
Вложения
Тип файла: rar База данных гостиницы.rar (13.8 Кб, 103 просмотров)

Последний раз редактировалось mistx; 12.10.2008 в 21:46.
mistx вне форума
Старый 14.10.2008, 18:16   #2
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Друзья, помогите плиз решить задачу.
mistx вне форума
Старый 14.10.2008, 20:18   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от mistx Посмотреть сообщение
нашел описание программы
Лучше бы Вы программу саму нашли вместо описания...


Слишком сложно всё как-то в Вашем описании. Проще было сделать всё с нуля.
См. вложение:
Вложения
Тип файла: rar База данных гостиницы.rar (18.8 Кб, 210 просмотров)

Последний раз редактировалось EducatedFool; 14.10.2008 в 20:20.
EducatedFool вне форума
Старый 14.10.2008, 21:21   #4
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Лучше бы Вы программу саму нашли вместо описания...
Спасибо огромное за пример.
Искал по всему инету, но похоже к этой книге не прилагались исходники. Читал описание тыщу раз, но как доходил до раскрывающего списка - ничего не понимал.
Мне здесь важно понять просто.
Я так понял, что на листе диалоговое окно создано с помощью элементов упр-я. Или как то иначе?
1. Как посмотреть здесь св-ва каждого объекта?
как программа понимает где "Edit Box 7" и "Edit Box 9", у вас переменные в екселе заданы на русском "поле вода 7 и 9".
mistx вне форума
Старый 14.10.2008, 21:31   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Я так понял, что на листе диалоговое окно создано с помощью элементов упр-я. Или как то иначе?
Да, создаётся новый лист через меню листа Добавить - Лист диалога. Потом на этот лист вешаем элементы управления с панели инструментов.

Цитата:
Как посмотреть здесь св-ва каждого объекта?
Выделяем элемент, щелкаем правой клавишей, выбираем Формат объекта

Взаимодействие происходит при помощи кода VBA:
Код:
Sub OK_Click()
    'On Error Resume Next
    'Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("Регистрация")
   
    surname = sh.Shapes("Edit Box 7").TextFrame.Characters.Text
    firstname = sh.Shapes("Edit Box 9").TextFrame.Characters.Text
    sex = IIf(sh.Shapes("Option Button 18").ControlFormat.Value = 1, "муж.", "жен.")
    pay = IIf(sh.Shapes("Check Box 11").ControlFormat.Value = 1, "да", "нет")
    passport = IIf(sh.Shapes("Check Box 12").ControlFormat.Value = 1, "да", "нет")
    days = CInt(Val(sh.Shapes("Drop Down 20").TextFrame.Characters.Text))
    room = sh.Shapes("Drop Down 4").ControlFormat.List(sh.Shapes("Drop Down 4").ControlFormat.Value)
    
    Select Case days Mod 10
        Case 2 To 4: daysTXT = CStr(days) & "  дня"
        Case 1: daysTXT = CStr(days) & "  день"
        Case Else: daysTXT = CStr(days) & "  дней"
    End Select
    If days > 10 And days < 15 Then daysTXT = CStr(days) & "  дней"


    Dim c1 As Range    ' первая ячейка в первой пустой строке
    Set c1 = ThisWorkbook.Worksheets("база данных").Cells(2, 1).Offset(60000, 0).End(xlUp).Offset(1, 0)
    c1.Offset(, 0).Value = surname
    c1.Offset(, 1).Value = firstname
    c1.Offset(, 2).Value = sex
    c1.Offset(, 3).Value = room
    c1.Offset(, 4).Value = pay
    c1.Offset(, 5).Value = passport
    c1.Offset(, 6).Value = daysTXT
End Sub
Можно было попробовать сделать через ячейки и формулы, но у меня с формулами туго

Цитата:
как программа понимает где "Edit Box 7" и "Edit Box 9", у вас переменные в екселе заданы на русском "поле вода 7 и 9".
Чтобы узнать названия элементов управления, нажимаем Запись макросов и по очереди выделяем все элементы.

Получаем в результате записи кода что-то вроде
Код:
    ActiveSheet.Shapes("Edit Box 7").Select
    ActiveSheet.Shapes("Edit Box 9").Select
    ActiveSheet.Shapes("Check Box 11").Select
    ActiveSheet.Shapes("Check Box 12").Select
    ActiveSheet.Shapes("Drop Down 20").Select
    ActiveSheet.Shapes("Spinner 16").Select
    ActiveSheet.Shapes("Option Button 18").Select
    ActiveSheet.Shapes("Option Button 19").Select
    ActiveSheet.Shapes("Drop Down 4").Select
Отсюда и названия элементов...
EducatedFool вне форума
Старый 15.10.2008, 21:06   #6
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Цитата:
Потом на этот лист вешаем элементы управления с панели инструментов.
После создания диалогового окна все элементы становятся не активными на панели..
mistx вне форума
Старый 16.10.2008, 06:57   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
После создания диалогового окна все элементы становятся не активными на панели..
Когда я скачал Ваш файл и добавил в него лист диалога (через меню листа Добавить - Лист диалога), все элементы были активными.

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

Может, кто подскажет, как добавить новые элементы в лист диалога? (см. последнее вложение в этом топике)
EducatedFool вне форума
Старый 16.10.2008, 07:55   #8
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Цитата:
Может, кто подскажет, как добавить новые элементы в лист диалога? (см. последнее вложение в этом топике)
После долгих опытов врубился. открыл ваш файл на виртуальной машине и все элементы стали активными, потом посмотрел на панели и оказалось, что панель Элементы управления - неактивна (похоже так и должно быть), а панель Формы - активна.

Спасибо за помощь!
mistx вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание базы данных TECHNIC SQL, базы данных 5 28.07.2008 15:23
работа базы данных Access через интернет. Леонид Microsoft Office Access 6 27.05.2008 08:54
Создание базы данных: проблема Камикадзе Помощь студентам 5 25.10.2007 19:40
Создание базы данных emfw БД в Delphi 5 04.03.2007 02:46