Страницы: 1
RSS
сохранение выбранного OptionButton в форме при закрытии
 
всем доброго времени суток
У меня есть форма. В форме использую несколько
а) ComboBox (Бренд, Наименование товара, Неделя)
б) OptionButton
1. Заполнение карты
- по Фед. округам
- скрыть
2. Значение
- код региона
- прирост
- скрыть
3) пузырьки
- показать
скрыть

написал код (ComboBox):
если мы выбираем определенного бренда, наименование товара и недели, и закрываем форму и открываем заново, то наши выбранные настройки автоматически подтягиваются из ячейки и нам не придется заново выбирать

но вот эту идею не смог реализовать по сравнению с OptionButton
например:
если выбираем 1) по фед. округам 2) прирост 3) показать
если закрываем то они исчезают и придется перевыбирать заново, это как то не удобно
возможно ли дописать код, чтобы сохранились выбранные optionbutton?
чтобы всем было понятно выложил файл
есть ли идеи или какие-то ссылки чтобы реализовать данную идею
заранее спасибо
Изменено: hk1209 - 05.08.2014 16:18:21
 
Алгоритм примерно такой:
1. В обработчике события UserForm_QueryClose цикл по контролам и при OptionButton* = True в свойство Tag этого OptionButton* записываем флаг - например 1
2. При инициализации формы считывать это свойство у всех OptionButton* и при наличии там 1 устанавливать этот OptionButton* =True
Согласие есть продукт при полном непротивлении сторон
 
Самый простой способ, - добавить в код формы следующее:
Код
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   Cancel = True
   Me.Hide
End Sub 
т.е. при закрытии формы она просто скрывается
 
Sanja, свойство объекта "tag" , измененное в процессе открытой формы, живет только до ее закрытия, далее свойство примет первоначальное значение.
Поэтому форму либо скрывать, как указал Игорь, либо сохранять значения в другом месте, например на листе.
 

Код
For i = 0 To Me.Controls.Count - 1
    If TypeOf Me.Controls(i) Is MSForms.OptionButton Then
    'тут выполняем необходимые операции по сохранению или присвоению значений контрола 
    End If
Next
 
 
Цитата
hk1209 пишет:
если мы выбираем определенного бренда, наименование товара и недели , и закрываем форму и открываем заново, то наши выбранные настройки автоматически подтягиваются из ячейки
Что мешает задействовать аналогичным образом ещё несколько ячеек, в которых хранить значения для радиокнопок?
 
Юрий М, спасибо за участие
Хотел использовать, но, к сожалению у меня не получилось
буду признателен, если есть какие-то ссылки или идеи
 
всем спасибо за участие B.Key, Игорь, Sanja, к сожалению не помог
я предпочел бы сохранить значение на листе, где-нибудь начиная с А5
когда значение подтягиваются из ячейки, то макрос автоматически обрабатывается и мы сразу увидим результат своего выбора на карте
 
использовал следующий код для первой группы:
Код
Private Sub OptionButton1_Click()
    Worksheets("Map").Range("A5") = True
End Sub 

Private Sub OptionButton3_Click()
    Worksheets("Map").Range("A5") = False
End Sub 
для активации UserForm (вариант 1):
Код
Private Sub UserForm_Activate()
    OptionButton1.Value = Worksheets("Map").Range("A5").Value
End Sub 
если выбираем optionbutton1 и закрываем, то при открытии автоматически выбирается optionbutton1, а если выбираем optionbutton3, то при открытии ничего не выбирается

вариант 2
Код
Private Sub UserForm_Activate()
        If Worksheets("Map").Range("A5").Value = "TRUE" Then
            OptionButton1.Value = Worksheets("Map").Range("A5").Value
        ElseIf Worksheets("Map").Range("A5").Value = "FALSE" Then
            OptionButton3.Value = Worksheets("Map").Range("A5").Value
        End If
End Sub 
если выбираем optionbutton1 или optionbutton3 и закрываем форму, то при открытии ничего не выбирается
думаю что-то пропускаю
прошу вашей помощи
Заранее спасибо
Изменено: hk1209 - 12.08.2014 20:49:21 (доп инфо)
 
решил эту задачу, если выбор между 2 optionbutton:
Код
Private Sub UserForm_Activate()
        Select Case Worksheets("Map").Range("A5").Value
            Case True
                OptionButton1.Value = True
            Case False
                OptionButton3.Value = True
        End Select
End Sub 
а как решить задачу, если есть в форме больше 2 optionbutton, например, 3 или 5?
 
всем спасибо за участие
сам решил, извините что Вас беспокоил
 
не вдаваясь в детали группировки контролов
Код
Private Sub OptionButton1_Click()
    Worksheets("Map").Range("A5").Value = 1
End Sub
 
Private Sub OptionButton3_Click()
    Worksheets("Map").Range("A5").Value = 3
End Sub
'...
' Add 155 more buttons!
'...
Private Sub OptionButton158_Click()
    Worksheets("Map").Range("A5").Value = 158
End Sub

Код
Private Sub UserForm_Activate()
   s = "OptionButton" & Worksheets("Map").Range("A5").Value
   Me.Controls.Item(s).Value = True
End Sub
F1 творит чудеса
 
Максим Зеленский, спасибо за участие
именно так решил  
Страницы: 1
Читают тему
Наверх