串联和遍历复选框和布尔值

时间:2020-05-05 08:08:40

标签: excel vba

下面的代码从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

2 个答案:

答案 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是您的复选框CheckD1CheckD10所在的表格。

如果您在工作表上使用了窗体控件,那么应该是

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

对于那些知道的人来说很简单,但是今天有一些新知识!

相关问题