我是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
我按照与我遇到的所有其他论坛或教程相同的设置,但似乎没有发生任何事情。任何建议都表示赞赏。
答案 0 :(得分:0)
编辑:此答案仅适用于将复选框直接放在Excel工作表上,而不是按照要求的用户形式。随意downvote!
我玩弄它并没有完全简单。无论您使用的是Form控件还是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