1

我是 Visual Basics 的新手(到目前为止 2 天),我做过的唯一其他编程是 MATlab。

我试图让程序在 Excel 的不同列中打印不同的数字,具体取决于是否选中了用户表单中的复选框。总共有 26 个复选框 - 以及一些文本框 - 我正在尝试使用 For Each Control 循环来运行所有复选框。

我查看了一些教程和一些论坛,但是当我尝试运行测试时,代码不起作用。更具体地说,没有错误出现,但“测试是否有效?” 不在任何地方打印。

 Private Sub Add_Button_Click()

 Dim Ctrl As Control

 For Each Ctrl In DataInput.Controls
        If TypeName(Ctrl) = "Checkbox" Then
            If Ctrl.Value = True Then
                Sheets("Data").Range("A1") = "Testing if it Works?" 
            End If
        End If
 Next

 End Sub

我遵循与我遇到的所有其他论坛或教程相同的设置,但似乎没有发生任何事情。任何建议表示赞赏。

4

1 回答 1

0

编辑:此答案仅适用于将复选框直接放在 Excel 工作表上,而不是按要求放在用户表单中时。随意投反对票!

我玩弄了它,它一点也不简单。无论您使用的是表单控件还是 ActiveX 控件,都有些不同。下面的代码对我有用,尽管我不完全确定它们是最好的方法。

使用 ActiveX 控件:

Private Sub Add_Button_Click()

For Each Ctrl In ActiveSheet.OLEObjects
   If TypeName(Ctrl.Object) = "CheckBox" Then
       If Ctrl.Object = True Then
           Sheets("Data").Range("A1") = "Testing if it Works?"
       End If
   End If
Next

End Sub

使用表单控件

Private Sub Add_Button_Click2()

For Each Item In Me.Shapes
   If Item.FormControlType = xlCheckBox Then
       If Item.DrawingObject = 1 Then
           Sheets("Data").Range("A1") = "Testing if it Works?"
       End If
   End If
Next

End Sub
于 2013-07-26T08:16:20.010 回答