亲爱的所有人:我需要将复选框添加到A列,即我的数据透视表左侧,从B列开始到D列。我还希望复选框链接到数据库的最右侧表,即E栏。
我找到了一个代码来做到这一点。但是它限于特定范围(“A4:A9”)。我希望代码能够动态添加复选框,而不管数据透视表的长度如何,换句话说它会增长到最后一行。
请附上我已经
的整个代码Sub AddCheckBox()
Dim cell As Range
DelCheckBox 'Do the delete macro
'or delete all checkboxes in the worksheet
' ActiveSheet.CheckBoxes.Delete
Dim MyRow As Long
lastrow = Cells.Find("*", Range("A1"), xlValues, , xlByRows, xlPrevious).Row
For Each cell In Range("A4:A9")
With ActiveSheet.CheckBoxes.Add(cell.Left, _
cell.Top, cell.Width, cell.Height)
.LinkedCell = cell.Offset(, 4).Address(External:=True)
.Interior.ColorIndex = 37 'or xlNone or xlAutomatic
.Caption = ""
'.Border.Weight = xlThin
End With
Next
With Range("A4:A9")
.Rows.RowHeight = 15
End With
End Sub
Sub DelCheckBox()
For Each cell In Range("A4:A9")
Worksheets("Analysis").CheckBoxes.Delete
Next
End Sub
我找到了一个标识最后一行的代码。但是,我必须做错了,因为当我尝试将其与其余代码一起插入时,它似乎不起作用。事实上,我不知道我需要插入它才能正常工作。任何人都可以帮助我确定我需要做什么吗?
非常感谢您提供的所有帮助。
答案 0 :(得分:0)
尝试使用lastrow = ActiveSheet.Range("A" & ActiveSheet.Rows.Count).end(xlUp).Row
查找列中的最后一行而不是您的方法。同时将Range("A4:A9")
更改为RangE("A4:A" & lastrow)
代码中引用的任何位置(同时将4
更改为A列中已使用单元格的第一行)
以下评论后更新
我已经修改了上面的代码。在您计算'之前删除复选框时,您的工作并不起作用。他们。因此,它只是从第1行到第4行添加它们。如果您将NoRow
列E
更改为工作表中的常量列,则可以执行您想要的操作。
Sub AddCheckBox()
Dim cell
Dim NoRow As Integer: Dim firstRow As Integer
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Analysis")
With ws
.CheckBoxes.Delete
' Change the `E` to the column that the checkboxes are aligning with
NoRow = .Range("E" & .Rows.Count).End(xlUp).Row
End With
For Each cell In Range("A4:A" & NoRow)
With ws.CheckBoxes.Add(cell.Left, _
cell.Top, cell.Width, cell.Height)
.LinkedCell = cell.Offset(, 4).Address(External:=True)
.Interior.ColorIndex = 37 'or xlNone or xlAutomatic
.Caption = ""
'.Border.Weight = xlThin
End With
Next
With ws.Range("A4:A" & NoRow).Cells
.Rows.RowHeight = 15
End With
End Sub