需要使用VBA将checkbox限制为每行一个
我正在使用下面的代码来创build每一行旁边的checkbox。 可以有500-2500行的任何地方,所以行数需要是dynamic的。
我在尝试着:
- 将工作表从一个工作簿复制到另一个工作簿
- 表单被复制后,添加每行旁边的checkbox
- 如果K为TRUE,我使用条件格式来浏览连续的所有文本,checkbox在J.
- 我遇到的问题是,如果一行的格式不相同的高度,两个checkbox出现在该行,它会影响后续的行。
这就是我使用的代码的样子。 请帮忙。
Sub create_new_wb_CHECKLIST() Sheets("Jobs by Day").Copy Dim ToRow As Long Dim LastRow As Long Dim MyLeft As Double Dim MyTop As Double Dim MyHeight As Double Dim MyWidth As Double LastRow = Range("I20000").End(xlUp).Row For ToRow = 2 To LastRow If Not IsEmpty(Cells(ToRow, "I")) Then MyLeft = Cells(ToRow, "J").Left MyTop = Cells(ToRow, "J").Top MyHeight = Cells(ToRow, "J").Height MyWidth = MyHeight = Cells(ToRow, "J").Width ActiveSheet.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select With Selection .Caption = "" .Value = xlOff .LinkedCell = "K" & ToRow .Display3DShading = False End With End If Next List item End Sub
间距在你当前的代码中的一个问题的原因是因为你从来没有设置checkbox的Height
,所以它设置为默认的高度。 Add
方法中的参数只是告诉VBA 放置checkbox的VBA上的哪个部分,它似乎并没有设置checkbox的Height
,因此这些框根据行高重叠。
我发现在With Selection
块中放置一个.Height = MyHeight
解决了它:
With Selection .Caption = "" .Value = xlOff .LinkedCell = "K" & ToRow .Display3DShading = False .Height = myHeight End With
添加以下内容,我认为我sorting。 对错误格式的问题抱歉,这是我第一次张贴堆栈。 感谢您所有的帮助!!!
为了摆脱回车,我添加了这个循环
For Each MyRange In ActiveSheet.UsedRange If 0 < InStr(MyRange, Chr(10)) Then MyRange = Replace(MyRange, Chr(10), "") End If Next