【问题标题】:How to retrieve check of checkbox after clicking listbox_click() in Excel VBA?在 Excel VBA 中单击 listbox_click() 后如何检索复选框的检查?
【发布时间】:2020-02-26 15:04:07
【问题描述】:

希望发生的事情,当单击列表框时,它将从工作表中检索复选框的检查。

Private Sub ListBox1_Click()  
Dim say, lastrow As Long

TextBox15 = ListBox1.Column(0)
TextBox18 = ListBox1.Column(1)
TextBox1 = ListBox1.Column(2)
TextBox2 = ListBox1.Column(3)
TextBox19 = ListBox1.Column(4)
TextBox3 = ListBox1.Column(5)
TextBox24 = ListBox1.Column(6)
TextBox26 = ListBox1.Column(7)
TextBox5 = ListBox1.Column(8)
TextBox6 = ListBox1.Column(9)
TextBox7 = ListBox1.Column(10)
TextBox8 = ListBox1.Column(11)
TextBox23 = ListBox1.Column(12)
TextBox22 = ListBox1.Column(13)
TextBox4 = ListBox1.Column(14)
TextBox21 = ListBox1.Column(15)
TextBox20 = ListBox1.Column(16)
TextBox11 = ListBox1.Column(17)
TextBox12 = ListBox1.Column(18)
TextBox13 = ListBox1.Column(19)
TextBox14 = ListBox1.Column(20)
TextBox27 = ListBox1.Column(21)
TextBox28 = ListBox1.Column(22)
TextBox29 = ListBox1.Column(23)
TextBox25 = ListBox1.Column(24)
TextBox30 = ListBox1.Column(25)
TextBox31 = ListBox1.Column(26)
TextBox32 = ListBox1.Column(27)
TextBox33 = ListBox1.Column(28)
CheckBox1 = ListBox1.Column(29)
CheckBox2 = ListBox1.Column(30)
CheckBox3 = ListBox1.Column(31)
CheckBox4 = ListBox1.Column(32)
CheckBox5 = ListBox1.Column(33)
CheckBox6 = ListBox1.Column(34)
CheckBox7 = ListBox1.Column(35)
CheckBox8 = ListBox1.Column(36)
CheckBox9 = ListBox1.Column(37)
CheckBox10 = ListBox1.Column(38)
CheckBox11 = ListBox1.Column(39)
CheckBox12 = ListBox1.Column(40)
CheckBox13 = ListBox1.Column(41)

lastrow = Sheets("liste").Cells(Rows.Count, "D").End(xlUp).Row
Set sonsati = Sheets("liste").Range("D2:D" & lastrow).Find(What:=TextBox1.Text, LookIn:=xlValues, LookAt:=xlWhole)
say = sonsati.Row
Sheets("liste").Range("A" & say & ":AD" & say).Select

CommandButton1.Enabled = False
CommandButton2.Enabled = True
CommandButton3.Enabled = True
End Sub

我尝试了上面的代码,但总是提示错误

“运行时错误'-2147024809',无法获取列属性。参数无效。

【问题讨论】:

  • 在第 4 列尝试类似 CheckBox1.Value = ListBox1.List(ListBox1.ListIndex, 4) 的内容。我假设列表框在第 4 列中具有 -1 或 0 之类的值
  • 参见This,了解如何从多列列表框的列中检索值
  • 我试过了,但不幸的是我得到了一个“无法获取列表属性。无效的参数
  • 您是如何将项目添加到列表框的?
  • 我有一个用于保存的命令按钮。保存的每个条目都将保存到 Worksheet lastrow,因此 listbox 将仅根据 textbox values 和 checkbox values 显示工作表中的内容。复选框值是我遇到的问题,因为当您将复选框值保存到工作表时以及当我想在将复选框单击到问题的列表框时检索复选框的检查时,复选框值是 True 或 False。因为可能是真或假,它总是一个无效的论点。

标签: excel vba checkbox listbox


【解决方案1】:

在列表框中,它显示为 True / False。 – Crusin18 1 小时前

您正在尝试将String 分配给Boolean。先转换成Boolean再试试。例如

CheckBox6.Value = CBool(ListBox1.Column(x))

CBool("True") 将返回布尔值 TrueCBool("False") 将返回布尔值 False。如果你认为可以有空格,那么试试这个

CheckBox6.Value = CBool(Trim(ListBox1.Column(x)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 2021-07-10
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2011-10-16
    相关资源
    最近更新 更多