下面的代码从10个复选框中提取值,并应用相应的布尔检查。
我正在努力将复选框和布尔名称串联到While循环中。有人帮忙吗?
If CheckD1.Value = True Then check1 = True
If CheckD2.Value = True Then check2 = True
If CheckD3.Value = True Then check3 = True
If CheckD4.Value = True Then check4 = True
If CheckD5.Value = True Then check5 = True
If CheckD6.Value = True Then check6 = True
If CheckD7.Value = True Then check7 = True
If CheckD8.Value = True Then check8 = True
If CheckD9.Value = True Then check9 = True
If CheckD10.Value = True Then check10 = True
答案 0 :(得分:1)
您需要使用数组Check(1 To 10)
而不是单个变量check1 … check10
,并且需要使用UserForm1.Controls
之类的变量名称来访问您的复选框:
Dim Check(1 To 10) As Boolean
Dim i As Long
For i = 1 To 10
Check(i) = UserForm1.Controls("CheckD" & i).Value
Next i
UserForm1
是您的复选框CheckD1
至CheckD10
所在的表格。
如果您在工作表上使用了窗体控件,那么应该是
Check(i) = (ThisWorkbook.Worksheets("Sheet1").Shapes("CheckD" & i).OLEFormat.Object.Value = 1)
答案 1 :(得分:1)
最后自己解决问题,因此在其他人需要的时候发布答案。
将我的检查布尔值声明为具有以下内容的数组:
SELECT *
, CASE WHEN time >= '06:15:00' AND time < '12:00:00' THEN 'in' ELSE 'out' END in_out
FROM raws_attendance;
+----+---------+---------------------+----------+--------+
| id | no_reg | date_time | time | in_out |
+----+---------+---------------------+----------+--------+
| 13 | 2019069 | 2020-05-04 07:15:00 | 07:15:00 | in |
| 14 | 2019069 | 2020-05-04 21:15:00 | 21:15:00 | out |
| 15 | 2019069 | 2020-05-05 03:15:00 | 03:15:00 | out |
| 16 | 2019069 | 2020-05-05 04:15:00 | 04:15:00 | out |
| 17 | 2019069 | 2020-05-05 07:15:00 | 07:15:00 | in |
| 18 | 2019069 | 2020-05-05 21:15:00 | 21:15:00 | out |
| 19 | 2019070 | 2020-05-04 07:25:00 | 07:25:00 | in |
| 20 | 2019070 | 2020-05-04 21:25:00 | 21:25:00 | out |
| 21 | 2019070 | 2020-05-05 03:35:00 | 03:35:00 | out |
| 22 | 2019070 | 2020-05-05 04:25:00 | 04:25:00 | out |
| 23 | 2019070 | 2020-05-05 07:55:00 | 07:55:00 | in |
| 24 | 2019070 | 2020-05-05 21:55:00 | 21:55:00 | out |
+----+---------+---------------------+----------+--------+
然后通过以下方式循环浏览用户窗体上的复选框:
Dim check(1 to 10) as Boolean
对于那些知道的人来说很简单,但是今天有一些新知识!