在数据透视表旁边添加复选框,这些复选框将添加到数据透视表中的最后一行信息

时间:2015-06-19 08:52:19

标签: mysql sql-server excel vba excel-vba

亲爱的所有人:我需要将复选框添加到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

我找到了一个标识最后一行的代码。但是,我必须做错了,因为当我尝试将其与其余代码一起插入时,它似乎不起作用。事实上,我不知道我需要插入它才能正常工作。任何人都可以帮助我确定我需要做什么吗?

非常感谢您提供的所有帮助。

1 个答案:

答案 0 :(得分:0)

尝试使用lastrow = ActiveSheet.Range("A" & ActiveSheet.Rows.Count).end(xlUp).Row查找列中的最后一行而不是您的方法。同时将Range("A4:A9")更改为RangE("A4:A" & lastrow)代码中引用的任何位置(同时将4更改为A列中已使用单元格的第一行)

Source

以下评论后更新

我已经修改了上面的代码。在您计算'之前删除复选框时,您的工作并不起作用。他们。因此,它只是从第1行到第4行添加它们。如果您将NoRowE更改为工作表中的常量列,则可以执行您想要的操作。

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