gpt4 book ai didi

excel - 在excel VBA中循环列行直到为空

转载 作者:行者123 更新时间:2023-12-04 22:17:59 24 4
gpt4 key购买 nike

我有一张包含“N”列的表格,其中包含 30 行,每行内都有复选框
在 vba 中,我想创建一个在空单元格处停止的循环,即第 31 行,我尝试过这种方式:

Private Sub CommandButton1_Click()

Range("N9").Select

Do

If CheckBox1.Value = True Then Call do_OM

ActiveCell.Offset(1, 0).Select



Loop while ActiveCell.value = ""





End Sub
此循环仅适用于一行,这意味着带有复选框的单元格是一个空单元格,而我想要的是在没有复选框的单元格处停止.. 怎么办?
+
怎么说“如果 CheckBox(row number).Value = True ?”
提前致谢 :)

最佳答案

编辑
这部分将遍历非 Active X 复选框
由于复选框未绑定(bind)到工作表,因此实际上无法说出 CheckBox(row number) .也很有意义,因为一行可能有多个框。
但是,如果复选框的名称与行号对齐,那么您可以遍历它们。好吧,无论如何你都可以遍历它们,但是是的。
您可以执行以下操作:

For i = 1 To 30
ActiveSheet.CheckBoxes(i).Value
Next i
或者
For Each chk In ActiveSheet.CheckBoxes
chk.Value
Next chk
遍历盒子。第二个显然会遍历整个工作表。
我不认为你可以检查一个单元格中的一个盒子,但你可以通过使用 .TopLeftCell.Row 来检查盒子所在的单元格。它应该返回对象左上角的行。然后,您可以使用 .TopLeftCell.Column 与您的范围交叉引用(也许 Intersect ) .
Excel VBA - Ckeck if cell contains a checkbox可能会感兴趣。但正如我所说,它并没有真正检查一个单元格是否有一个复选框,它会检查所有复选框并检查它们中的任何一个是否在单元格中,按照我的建议使用相交。但是,您可以争辩说最终结果是相同的。
编辑评论: 这适用于 ACTIVE X Box
Dim nm As Object
Set nm = ActiveSheet.CheckBox1
nm.TopLeftCell.Row

'Iteration
For Each nm In ActiveSheet.OLEObjects
If TypeName(nm.Object) = "CheckBox" Then
debug.print nm.TopLeftCell.row
If nm.Object.Value = True Then ' do stuff
End If
Next nm

关于excel - 在excel VBA中循环列行直到为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67029471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com