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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2018, 21:31   #1
Otradnoe_4D
 
Регистрация: 06.03.2018
Сообщений: 8
По умолчанию Как заставить 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



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.03.2018 в 01:07.
Otradnoe_4D вне форума Ответить с цитированием
Старый 09.03.2018, 01:13   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Otradnoe_4D Посмотреть сообщение
Ни как не смог понят как сделать так что бы он работал и для combobox2, combobox3 и так далее.
попробуйте так:

Код:
Private Sub UserForm_Initialize()
  ComboBox1.AddItem "Иванов"
  ComboBox1.AddItem "Петров"
  ComboBox1.AddItem "Сидоров"
  
  Dim i As Integer
  On Error Resume Next
  i = CInt(ThisDocument.Variables("Combobox1LastChoice").Value)
  If Err.Number <> 0 Then Err.Clear
  ComboBox1.ListIndex = i
  i = CInt(ThisDocument.Variables("Combobox2LastChoice").Value)
  If Err.Number <> 0 Then Err.Clear
  ComboBox2.ListIndex = i

  i = CInt(ThisDocument.Variables("Combobox3LastChoice").Value)
  If Err.Number <> 0 Then Err.Clear
  ComboBox3.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 = "Combobox1LastChoice" Then
      Exit For
    End If
  Next
  If var Is Nothing Then
    ThisDocument.Variables.Add "Combobox1LastChoice", ComboBox1.ListIndex
  Else
    var.Value = ComboBox1.ListIndex
  End If

  For Each var In ThisDocument.Variables
    If var.Name = "Combobox2LastChoice" Then
      Exit For
    End If
  Next
  If var Is Nothing Then
    ThisDocument.Variables.Add "Combobox2LastChoice", ComboBox2.ListIndex
  Else
    var.Value = ComboBox2.ListIndex
  End If

  For Each var In ThisDocument.Variables
    If var.Name = "Combobox3LastChoice" Then
      Exit For
    End If
  Next
  If var Is Nothing Then
    ThisDocument.Variables.Add "Combobox3LastChoice", ComboBox3.ListIndex
  Else
    var.Value = ComboBox3.ListIndex
  End If


   .... и так далее  


End Sub
p.s. повторяющийся код желательно вынести в отдельные процедуры.
но и так по индусски тоже должно всё работать
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.03.2018, 12:28   #3
Otradnoe_4D
 
Регистрация: 06.03.2018
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
попробуйте так:

Код:
Private Sub UserForm_Initialize()
  ComboBox1.AddItem "Иванов"
  ComboBox1.AddItem "Петров"
  ComboBox1.AddItem "Сидоров"
  
  Dim i As Integer
  On Error Resume Next
  i = CInt(ThisDocument.Variables("Combobox1LastChoice").Value)
  If Err.Number <> 0 Then Err.Clear
  ComboBox1.ListIndex = i
  i = CInt(ThisDocument.Variables("Combobox2LastChoice").Value)
  If Err.Number <> 0 Then Err.Clear
  ComboBox2.ListIndex = i

  i = CInt(ThisDocument.Variables("Combobox3LastChoice").Value)
  If Err.Number <> 0 Then Err.Clear
  ComboBox3.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 = "Combobox1LastChoice" Then
      Exit For
    End If
  Next
  If var Is Nothing Then
    ThisDocument.Variables.Add "Combobox1LastChoice", ComboBox1.ListIndex
  Else
    var.Value = ComboBox1.ListIndex
  End If

  For Each var In ThisDocument.Variables
    If var.Name = "Combobox2LastChoice" Then
      Exit For
    End If
  Next
  If var Is Nothing Then
    ThisDocument.Variables.Add "Combobox2LastChoice", ComboBox2.ListIndex
  Else
    var.Value = ComboBox2.ListIndex
  End If

  For Each var In ThisDocument.Variables
    If var.Name = "Combobox3LastChoice" Then
      Exit For
    End If
  Next
  If var Is Nothing Then
    ThisDocument.Variables.Add "Combobox3LastChoice", ComboBox3.ListIndex
  Else
    var.Value = ComboBox3.ListIndex
  End If


   .... и так далее  


End Sub
p.s. повторяющийся код желательно вынести в отдельные процедуры.
но и так по индусски тоже должно всё работать
Спасибо огромное все работает так как надо))
Otradnoe_4D вне форума Ответить с цитированием
Старый 12.03.2018, 12:30   #4
Otradnoe_4D
 
Регистрация: 06.03.2018
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. повторяющийся код желательно вынести в отдельные процедуры.
но и так по индусски тоже должно всё работать
Можно об этом по подробнее? Не очень пока что разбираюсь в VBA ну и в программировании в целом)
Otradnoe_4D вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить combobox запоминать последнее значение? wolf05632 Microsoft Office Word 8 06.03.2018 23:26
Как зафиксировать последнее не пустое значение в ячейке? Flaneur Microsoft Office Excel 11 23.10.2015 21:25
подскажите как поменять последнее значение на предпоследнее zander Microsoft Office Excel 2 29.09.2009 19:20
Как получить последнее значение при работе программы voron29 Общие вопросы Delphi 1 27.02.2009 12:22
Как выбрать последнее по списку значение? CaustiC Microsoft Office Excel 2 17.11.2008 09:03