如何在工作表中获取复选框值?

时间:2017-11-15 12:03:45

标签: excel vba excel-vba checkbox

我在名为'Images'的工作表中有多个名为cBox1,cBox2等的复选框。

enter image description here

我有三张:数据表,图像,数据(分别)。 Images包含两个带有各种复选框的图像,一个文本框和一个按钮。当我单击按钮时,代码从文本框和复选框中获取值,并将值插入Data表中的表中。

我试图通过以下代码检查是否选中了复选框:

If ThisWorkbook.Worksheets(2).Shapes("cBox1").OLEFormat.Object.Value = 0 Then
    totalOfWeldsInOrder = totalOfWeldsInOrder + 1
    s1 = 0
    notInOrder = True
End If

但是,价值永远不会改变。

如何获取复选框的选中值?

我也尝试了下面的内容,但没有成功:

If ThisWorkbook.Worksheets(2).Shapes("cBox1").OLEFormat.Object.Value = -4146 Then
    totalOfWeldsInOrder = totalOfWeldsInOrder + 1
    s1 = 0
    notInOrder = True
End If

If Sheet2.Shapes("cBox1").ControlFormat.Value = xlOff Then
   ......
End If

编辑:

If ThisWorkbook.Worksheets(2).cBox1.Value = 0 Then
    totalOfWeldsInOrder = totalOfWeldsInOrder + 1
    s1 = 0
    notInOrder = True
End If

返回:

enter image description here

1 个答案:

答案 0 :(得分:0)

您的问题有一个简单的解决方案:

使用Active-X复选框。在菜单栏的“开发工具”选项卡下,有“插入”,它允许您插入两种复选框,两种每种控制结构。一个是active-x组件,它是更新的,另一个是出于向后兼容性的原因。因此,永远不要使用其他任何Active-X组件。然后代码可以如下使用:

If ThisWorkbook.Worksheets(2).Checkbox1.Value = False Then
    totalOfWeldsInOrder = totalOfWeldsInOrder + 1
    s1 = 0
    notInOrder = True
End If

可以通过显示和编辑它的属性来更改复选框名称“CheckBox1”,这样它也可以被称为“okbox”,这个名称将替换代码中的CheckBox1。