Excel vba,无法选择列表框中的行

时间:2018-04-26 09:15:58

标签: excel vba excel-vba

我有一个多页面形式的页面,它从文本框和复选框中获取输入,并在我单击提交按钮时将其添加到其下面的多列列表框中。然后,我希望用户能够在列表框中选择一行,并在文本框和复选框中显示内容以进行编辑。

我可以使用提交按钮将多个文本框和复选框值添加到列表框中,但是当我单击列表框项时它不会选择一行。它什么都不做。看起来焦点没有转移。

如果有人能就我如何解决这个问题给我一些想法或指导,我真的很感激吗?这两个操作的代码是:

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 :(得分:0)

在问题的评论链中找到问题的原因之后,我想在此处坚持解决方案,作为未来可能会遇到问题的人的答案:

  1. 确保正确设置了行为不当的ActiveX控件的.Enabled.Locked属性。 (True如果控件应允许用户在运行时进行操作/激活。False如果要拒绝用户与控件的交互。)
  2. 验证事件过程是否具有正确的名称。也许你更改了控件名称?事件过程的正确命名方案是controlName_eventName(),例如ListBox1_Click()。在设计模式下在控件的上下文菜单中选择显示代码时,会生成一个空的_click()过程。
  3. 虽然看似微不足道,但有时候简单的细节却无法引起我们的注意 - 在复杂的项目中更是如此。让项目外部的人查看您的问题通常很有帮助。他们无辜地无知你项目的内部运作,他们可能只能提出正确的问题,从而快速解决问题。