Страницы: 1
RSS
Как заставить combobox запоминать последнее значение?
 
Доброе. Нашел на просторах интернета такой вариант.
Подскажите как сделать так что бы данное действие работала и с ComboBox1, ComboBox2, ComboBox3 и т.д.
Заранее спасибо)
Код
Private Sub UserForm_Initialize()
  ComboBox1.AddItem "Иванов"
  ComboBox1.AddItem "Петров"
  ComboBox1.AddItem "Сидоров"
  
  Dim i As Integer
  On Error Resume Next
  i = CInt(ThisDocument.Variables("ComboboxLastChoice").Value)
  If Err.Number <> 0 Then Err.Clear
  ComboBox1.ListIndex = i
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  Dim var As Variable
  For Each var In ThisDocument.Variables
    If var.Name = "ComboboxLastChoice" Then
      Exit For
    End If
  Next
  If var Is Nothing Then
    ThisDocument.Variables.Add "ComboboxLastChoice", ComboBox1.ListIndex
  Else
    var.Value = ComboBox1.ListIndex
  End If
End Sub
 
Цитата
Шит написал: Нашел на просторах интернета такой вариант
Этот вариант для Word, а форум у нас по Excel. Приложите, лучше, файл-пример (в формате Excel) где покажите Ваши КомбоБоксы и что должно с ними происходить. А если строго по заявленной теме, то объявите ГЛОБАЛЬНУЮ переменную и в ней запоминайте нужное значение
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Да это для ворда. Но я думал ризницы большой нет), не очень опытен я в этих делах подскажите про ГЛОБАЛЬНУЮ переменную, что как там делать?
 
Цитата
Шит написал: как сделать так что бы данное действие работала
А Вы напишите обычными словами, что Вы хотите? Какое 'данное действие' и как 'работала'?
Согласие есть продукт при полном непротивлении сторон
 
Sanja, В UserForm у меня два а в дальнейшем больше Combobox два из них взаимосвязаны ( возможно это важно) В одном списке я выбераю округ в другом район и после того как я закрываю диалоговое окно нужно что эти данные сохранились. то есть при новом открытии UserForm были уже выбраны предыдущие данные.
 
а при запуске Excel на след. день
- при закрытии файла положить значения переменных в реестр
- при открытии файла взять их из реестра
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Шит написал:
закрываю диалоговое окно нужно что эти данные сохранились. то есть при новом открытии UserForm были уже выбраны предыдущие данные
Закрывайте не через Unload Me, а через Me.Hide.
Если закрываете крестиком - пропишите событие
Код
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = -1
Me.Hide
End Sub

При новом открытии в том же сеансе все будет на прежних местах.
 
Апострофф, Спасибо. Хорошее решение. Но меня интересует возможность запоминать выбор в определенных combobox
 
Ну и про ячейки листов экселя не стоит забывать - они тоже могут хранить данные) Например создать скрытый лист и туда записывать все те данные, которые могут понадобиться при последующих запусках файла.
Страницы: 1
Наверх