всем доброго времени суток У меня есть форма. В форме использую несколько а) ComboBox (Бренд, Наименование товара, Неделя) б) OptionButton 1. Заполнение карты - по Фед. округам - скрыть 2. Значение - код региона - прирост - скрыть 3) пузырьки - показать скрыть
написал код (ComboBox): если мы выбираем определенного бренда, наименование товара и недели, и закрываем форму и открываем заново, то наши выбранные настройки автоматически подтягиваются из ячейки и нам не придется заново выбирать
но вот эту идею не смог реализовать по сравнению с OptionButton например: если выбираем 1) по фед. округам 2) прирост 3) показать если закрываем то они исчезают и придется перевыбирать заново, это как то не удобно возможно ли дописать код, чтобы сохранились выбранные optionbutton? чтобы всем было понятно выложил файл есть ли идеи или какие-то ссылки чтобы реализовать данную идею заранее спасибо
Алгоритм примерно такой: 1. В обработчике события UserForm_QueryClose цикл по контролам и при OptionButton* = True в свойство Tag этого OptionButton* записываем флаг - например 1 2. При инициализации формы считывать это свойство у всех OptionButton* и при наличии там 1 устанавливать этот OptionButton* =True
Согласие есть продукт при полном непротивлении сторон
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 и закрываем форму, то при открытии ничего не выбирается думаю что-то пропускаю прошу вашей помощи Заранее спасибо
решил эту задачу, если выбор между 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