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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 11:24   #1
serikov
Пользователь
 
Регистрация: 16.07.2009
Сообщений: 29
По умолчанию пароль на открытие формы?

Всем доброго дня!
Нужна помощь-совет по работе с формой:
1. есть ли возможность поставить пароль для доступа к вкладкам
"MultiPage", что бы пользователи могли входить только в определенную
закладку? Или как поставить на командную кнопку пароль для открытия формы?
2. На форме создана "Frame" и в ней имеется 4 переключателя OptionButton, как заставить производить
опреленные действия при нажатом 1, 2, 3 или 4? Подробнее:
Данные из формы помещаю на лист книги таким образом "Dim sil5 As Integer
sil5 = InputBox("Введите нужное количество") - (по другому не сумел
вводить на лист данные в числовом формате) и через текстбокс,
дальше размещаю в строке - cell = Me.Date1:
cell.Next = sil5: cell.Next.Next = sil6: cell.Next.Next.Next = sil7:
cell.Next.Next.Next.Next = sil8: cell.Next.Next.Next.Next.Next = Me.FIO: cell.Next.Next.Next.Next.Next.Next = Me.num_sm: cell.Next.Next.Next.Next.Next.Next. Next = sil5 + sil6 + sil7 + sil8"
В Sil 5, 6, 7, 8 должны попасть из InputBox значение
при установленном флажке.
То есть если установлен фл.1, то sil5 = InputBox, если фл.2, то sil6 = InputBox и т.д.

Спасибо.
serikov вне форума Ответить с цитированием
Старый 07.06.2010, 13:46   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

1. Попробуйте что-то вроде этого:
Код:
Private Sub MultiPage1_Change()
    Select Case Me.MultiPage1.Value
        Case 0, 3, 4: Exit Sub    ' для этих вкладок пароль не требуется
        Case 1, 2
            Password = InputBox("введите пароль")
            ' если пароль не угадали, активируем первую вкладку
            If Password <> "мойпароль" Then
                Me.Frame1.Visible = False: Me.Frame2.Visible = False
                Me.MultiPage1.Value = 0
            Else
                Me.Frame1.Visible = True: Me.Frame2.Visible = True
            End If
    End Select
End Sub
На закрываемых паролем вкладках я все содержимое поместил в фреймы, которые по умолчанию скрыты (.Visible = False)

2. Я бы сделал как-то так:
Код:
Private Sub CommandButton1_Click()
    Dim cell As Range: Set cell = [b5]
    res = InputBox("Введите нужное количество")
    Select Case True
        Case Me.OptionButton1: sil5 = Val(res): sil6 = 4
        Case Me.OptionButton2: sil6 = Val(res): sil7 = 7
        Case Me.OptionButton3: sil7 = Val(res): sil5 = 2
        Case Me.OptionButton4: sil8 = Val(res): sil5 = 9: sil6 = 7
    End Select
    s = Val(sil5) + Val(sil6) + Val(sil7) + Val(sil8)
    cell.Resize(, 5).Value = Array(Me.Date1, sil5, sil6, sil7, sil8, Me.FIO, Me.num_sm, s)
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 07.06.2010, 15:05   #3
serikov
Пользователь
 
Регистрация: 16.07.2009
Сообщений: 29
По умолчанию

Большое спасибо за помощь, даже можно сказать за сделанное дело. Если можно, то объясните мне это выражение: Case Me.OptionButton1: sil5 = Val(res): sil6 = 4
почему sil6= 4 и осатльные 7, 2, 9?
Хотелось бы не просто содрать, а понять.

Большое Вам спасибо.
serikov вне форума Ответить с цитированием
Старый 07.06.2010, 15:35   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
почему sil6= 4 и остальные 7, 2, 9?
это я лишь для примера написал - типа того, что помимо sil5 = Val(res) можно для того же OptionButton дописать еще несколько условий.
Просто я не совсем понял смысл вашей фразы:
Цитата:
То есть если установлен фл.1, то sil5 = InputBox, если фл.2, то sil6 = InputBox и т.д.
Что должно попадать в ячейки, куда записываются sil5, sil7, sil8,
если известно значение только sil6 (при выбранном OptionButton2)?


Ну и строку cell.Resize(, 5).Value = Array(Me.Date1, sil5, sil6, sil7, sil8, Me.FIO, Me.num_sm, s)
правильно было бы записать так: cell.Resize(, 8).Value = Array(Me.Date1, sil5, sil6, sil7, sil8, Me.FIO, Me.num_sm, s)

И ещё:
Цитата:
есть ли возможность поставить пароль для доступа к вкладкам
"MultiPage", что бы пользователи могли входить только в определенную
закладку?
Я бы изначально сделал некторые вкладки скрытыми, а при запуске формы (по событию формы Initialize) запрашивал бы пароль.
В случае, если пароль введён неверно, запускал бы форму как есть - лишь с некоторыми видимыми вкладками Multipage, а если пароль угадан - изменял бы свойство Visible всех вкладок на TRUE)

Последний раз редактировалось EducatedFool; 07.06.2010 в 15:40.
EducatedFool вне форума Ответить с цитированием
Старый 07.06.2010, 16:35   #5
serikov
Пользователь
 
Регистрация: 16.07.2009
Сообщений: 29
По умолчанию

Наверно я сам напутал всего и теперь понять сложно.
Мысль такова, что при установленном флажке номер 1,2,3 или 4 данные, которые вводятся через InputBox будут иметь принадлежность к соответсвующим именам sil5, sil6, sil7, sil8. То есть при разносе данных в таблицу в 1-й столбец (sil5) попадет значение если стоит 1-й флаг, если стоит 2-й флаг, то sil5 пусто, а sil6 равен вводимому значению и т.д.
serikov вне форума Ответить с цитированием
Старый 07.06.2010, 17:16   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ну тогда все просто:
Код:
Private Sub CommandButton1_Click()
    Dim cell As Range: Set cell = [b5]
    res = InputBox("Введите нужное количество")
    Dim sli5 As Long, sli6 As Long, sli7 As Long, sli8 As Long
    Select Case True
        Case Me.OptionButton1: sil5 = Val(res)
        Case Me.OptionButton2: sil6 = Val(res)
        Case Me.OptionButton3: sil7 = Val(res)
        Case Me.OptionButton4: sil8 = Val(res)
    End Select
    s = Val(sil5) + Val(sil6) + Val(sil7) + Val(sil8)
    cell.Resize(, 8).Value = Array(Me.Date1, sil5, sil6, sil7, sil8, Me.FIO, Me.num_sm, s)
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 09.06.2010, 16:47   #7
serikov
Пользователь
 
Регистрация: 16.07.2009
Сообщений: 29
По умолчанию

Уважаемый EducatedFool затратьте на меня еще несколько минут, пожалуйста!

Никак не могу довести Ваш код до моей потребности, выручайте.
В этом коде важно, чтобы на момент выполнения команды были выбраны case1, 2, 3 или 4, то есть должен быть код проверки установки галки. С текстовым боксом поступаю так If Me.Date1 = "" Then MsgBox "Не введена дата", vbCritical, "Ошибка": Exit Sub, а как поступить с этими кнопками? Объединить их фреймом и проверить на свойство True или false? Пробовал, но что-то не получилось.
Потом я использовал вставку данных на лист книги через cell.next. и у меня построчно заполнялась таблица, а при коде cell.Resize затирается предыдущий и вместо него идет вставка новых данных.
И еще Вы начинаете код Dim cell As Range: Set cell = [b5], а я содрал с какого-то примера Dim cell As Range: Set cell = [a65000].End(xlUp).Offset(1) вот b5 и а6 что они обозначают?

Спасибо за терпение, просто первый раз с формами работаю, а реально разбирающихся очень мало.
serikov вне форума Ответить с цитированием
Старый 09.06.2010, 17:13   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
а как поступить с этими кнопками? Объединить их фреймом и проверить на свойство True или false?
Можно проще:
Код:
    Select Case True
        Case Me.OptionButton1: sil5 = Val(res)
        Case Me.OptionButton2: sil6 = Val(res)
        Case Me.OptionButton3: sil7 = Val(res)
        Case Me.OptionButton4: sil8 = Val(res)
        ' если проверка дошла досюда, значит, все 4 OptionButton-а = FALSE
        Case True:   MsgBox "ничего не выбрано", vbCritical: Exit Sub
    End Select
Цитата:
а при коде cell.Resize затирается предыдущий и вместо него идет вставка новых данных
Ничего не должно затираться.
вставка в обоих случаях идёт, начиная с ячейки cell, и вправо.
Ячейку вы выбираете правльно:
Код:
Dim cell As Range: Set cell = range("a" & rows.count).End(xlUp).Offset(1)
А я поставил Set cell = [b5] лишь для примера - в этом случае вставка начинается с ячейки B5 (я ж не знал, как вы определяете ячейку для вставки)
[a65000] в вашем примере - типа последняя ячейка в столбце А
Правильнее писать так: range("a" & rows.count) - в этом случае ячейка будет точно последней в столбце
EducatedFool вне форума Ответить с цитированием
Старый 09.06.2010, 17:39   #9
serikov
Пользователь
 
Регистрация: 16.07.2009
Сообщений: 29
По умолчанию

Постепенно начинаю понимать, хотя теории явно не хватает. Попробую поискать буквари.
Вам БОЛЬШОЕ СПАСИБО! Благодаря таким поддержкам у людей не отбивается желание двигаться или хотя бы делать попыпки двигаться вперед!
Еще раз спасибо.
serikov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие формы select Vitalyk JavaScript, Ajax 0 18.03.2010 21:08
Открытие формы через пароль segail Microsoft Office Excel 30 12.03.2010 19:51
Открытие формы изменить в БД kuzmich БД в Delphi 11 19.10.2009 17:09
Открытие формы dampirik Общие вопросы C/C++ 3 17.08.2009 11:02
Открытие формы inret Общие вопросы Delphi 3 06.05.2008 14:37