excel - 具有 3 个嵌套循环的 Excel VBA
问题描述
我想在我的用户窗体中为多个复选框提供来自单元格的标题。因为我不想写下每一个参考,我想使用一个循环。不幸的是,我不知道该怎么做。
我每个工作日有 8 个复选框,总共有 23 个工作日。命名类似于 WD1_1, WD1_2 ... WD1_8, WD2_1, WD2_2 ... WD2_8。
WD1_1 从选项卡“任务”单元格 B2 中获取值。从那以后,它总是+1。
我遇到的问题是,我不能一直循环到 185,因为三件事正在发生变化:计算任务编号和单元格编号,当达到 WD1 中的任务 8 时,向上计数 WD +1 并从 1 重新启动任务编号到 8 并继续计数单元格引用。
我只是在一个实例中做到这一点,例如单元格引用,但不是所有三个都在一起。
这是我必须遍历每个 WD 的任务,但我不知道如何计算工作日以及单元格编号:
For x = 1 To 23
For i = 1 To 8
For y = 2 To 185
If Controls("WD" & x & "_" & i).Caption = "" Then
Controls("WD" & x & "_" & i).Visible = False
Else
Controls("WD" & x & "_" & i).Visible = True
End If
If Sheets("Tasks").Range("I" & y) = 1 Then
Controls("WD" & x & "_" & i).Value = True
Else
Controls("WD" & x & "_" & i).Value = False
End If
Next y, i, x
提前感谢您的帮助!
解决方案
找到了答案。我的错误是通过第三个循环。删除第三个循环,然后使用线性函数遍历每一行是正确的方法:
Dim x As Integer
Dim i As Integer
For x = 1 To 23
For i = 1 To 8
If Controls("WD" & x & "_" & i).Caption = "" Then
Controls("WD" & x & "_" & i).Visible = False
Else
Controls("WD" & x & "_" & i).Visible = True
End If
If Sheets("Tasks").Range("I" & (x - 1) * 8 + i + 1).Value = 1 Then
Controls("WD" & x & "_" & i).Value = True
Else
Controls("WD" & x & "_" & i).Value = False
End If
Next i, x
推荐阅读
- javascript - ajax结果成功null
- html - 表头位置:粘性和边框问题
- android - 通知不只显示振动工作
- python - 有没有办法通过python用斜体格式化剪贴板?
- python - 我无法通过我的代码运行我的 csv 文件,并且我不理解错误消息
- matplotlib - Cartopy - 在 Matplotlib 地图上使用“populated_places”NaturalEarthFeature 显示
- html - position:sticky 在 ie 浏览器中不起作用
- visual-studio - 仅在特定文件名的上下文菜单中显示命令(+扩展名)
- django - 使用多个字段的 Django 动态链接
- java - 设置每行的 Edittext 背景