Excel vba, невозможно выбрать строку в списке - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть страница в многостраничной форме, которая берет данные из текстового поля и флажка и добавляет их в список из нескольких столбцов под ним, когда я нажимал кнопку отправки. Затем я хочу, чтобы пользователь мог выбрать строку в списке и отобразить содержимое в текстовом поле и флажок для редактирования.

Я могу добавить несколько значений текстового поля и флажка в поле списка, используя кнопку отправки, но он не выбирает строку, когда я щелкаю элемент списка. Это просто ничего не делает. Похоже, фокус не передается.

Был бы очень признателен, если бы кто-нибудь дал мне несколько идей или указаний о том, как я могу решить эту проблему? Код для двух действий:

Private Sub cmdaddcontrol_Click()

If Not txtbox_Ctrl_Desc = "" Then 'check for input into text box
   ctrl_listbox.AddItem 'add items to list box
      ctrl_listbox.List(ctrl_list_count, 0) = ctrl_list_count + 1 'add row number in list box column
      ctrl_listbox.List(ctrl_list_count, 1) = txtbox_Ctrl_Desc.Value 'set list box column to text box contents
   If Not chkbox_ctrl = False Then 'check if check box is selected then insert appropriate value into listbox column
      ctrl_listbox.List(ctrl_list_count, 2) = "Y"
   Else
      ctrl_listbox.List(ctrl_list_count, 2) = "N"
   End If
   ctrl_list_count = ctrl_list_count + 1 'increment listbox row counter
   txtbox_Ctrl_Desc = "" 'reset text box to blank
   chkbox_ctrl = False 'reset check box to blank
Else
   MsgBox "You have not enetered anything in the control box" 'error message if no control description in text box
End If

End Sub

Private Sub ctrl_listbox_Click()
Dim i As Integer

'find the selected list item
i = ctrl_listbox.ListIndex
ctrl_listbox.Selected(i) = True

'add the values to the text and check boxes above the list box
txtbox_Ctrl_Desc.Value = ctrl_listbox.Column(1, i)
If Not ctrl_listbox.Column(3, i) = "  Y" Then
   chkbox_ctrl.Value = True
Else
   chkbox_ctrl.Value = False
End If

End Sub

1 Ответ

0 голосов
/ 02 мая 2018

После нахождения причины проблемы в цепочке комментариев вопроса, я хотел бы сохранить решение здесь в качестве ответа для людей, которые могут столкнуться с вопросом в будущем:

  1. Убедитесь, что свойства .Enabled и .Locked неправильно работающего элемента управления ActiveX установлены правильно. (True, если элемент управления должен разрешать манипулирование / активацию пользователем во время выполнения. False, если вы хотите запретить взаимодействие пользователя с элементом управления.)
  2. Убедитесь, что процедура события имеет правильное имя. Может быть, вы изменили имя элемента управления? Правильная схема именования для процедур событий controlName_eventName(), например ListBox1_Click(). Пустая процедура _click() генерируется, когда вы выбираете Показать код в контекстном меню элемента управления в режиме разработки.

Несмотря на кажущуюся простоту, иногда простые детали избегают нашего внимания, особенно в сложных проектах. Часто полезно, чтобы кто-то из стороннего проекта посмотрел на вашу проблему. В своем невинном незнании внутренней работы вашего проекта они могут просто задавать правильные вопросы, которые приводят к быстрому решению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...