【问题标题】:Excel VBA: Cycle through Checkboxes by name, and also through similarly named RangesExcel VBA:按名称循环检查复选框,并通过类似命名的范围
【发布时间】:2020-06-19 04:04:10
【问题描述】:

我的用户表单中有以下内容:

CheckBox11 CheckBox12 CheckBox13 CheckBox14 CheckBox15
CheckBox21 CheckBox22 CheckBox23 CheckBox24 CheckBox25

另外,在我的 excel 中,我有以下命名范围:

range11 range12 range13 range14 range15
range21 range22 range23 range24 range25

我想遍历每个复选框,如果为 True,请对范围执行操作,例如将相应范围复制粘贴到另一个位置。

我有一个嵌套的 For 循环,i = 1 to 2j = 1 to 5

然后在另一个长变量nm = i*10+j

现在我想用 nm 引用 CheckBox 和 Range。

也欢迎任何其他选择。

提前致谢。

【问题讨论】:

  • Me.Controls("CheckBox" & nm)Range("range" & nm)

标签: excel vba loops checkbox userform


【解决方案1】:

也许是这样的?

Sub Test()
For Each objControl In ActiveSheet.OLEObjects
If TypeName(objControl.Object) = "CheckBox" And objControl.Object = True Then
rngName = Replace(objControl.Name, "CheckBox", "range")
Range(rngName).Select
MsgBox rngName & " selected"
End If
Next
End Sub

sub 将在每个选定的 CheckBox 处选择命名范围(真值)。 但前提是复选框是 ActiveX,并且命名范围在复选框所在的同一张表内。

无论如何,您可以将Range(rngName).Select .... MsgBox rngName & " selected" 行更改为您想要对相应命名范围执行的任何过程。

如果复选框在用户表单中,则如下:

Private Sub CommandButton1_Click()
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" And ctrl = True Then
rngName = Replace(ctrl.Name, "CheckBox", "range")
Range(rngName).Select
MsgBox rngName & " selected"
End If
Next
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2019-12-05
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多