将按钮插入单元格

时间:2018-02-16 01:47:21

标签: excel vba excel-vba

我有一个userform,用用户的输入填充一行单元格。行中的最后一个单元格包含一个按钮,单击该按钮时,应将该行移动到另一个工作表并将其从第一个工作表中删除。我无法弄清楚如何将按钮链接到该单元格以给它一个参考点,以便我可以告诉它要移动哪一行。

目前,该按钮位于单元格t中,如下所示。

        Set t = ws.Cells(2, 1).Offset(j, 10)
        Set btn = ws.Buttons.Add(t.Left, t.Top, t.Width, t.Height)

        With btn
            .OnAction = "Printed"
            .Caption = "Complete"
            .Name = "btn" & j
        End With

有没有办法将按钮分配给单元格?或者在点击时激活按钮后面的单元格?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您无法在单元格中放置按钮。从代码中可以看出,按钮不是放在单元格中,而是放在工作表上。它在纸张上的位置由单元格相对于按钮所在位置定义。

您可以撤消此过程。 Btn.TopLeftCell指定一个Range,一个精确的单元格,按钮的左上角所在的位置。该范围具有Row属性,这是您感兴趣的行号。可以假设您的按钮的TopLeftCell将是您首次创建它的单元格。但是,因为您可以在不是给定的工作表上自由移动按钮。

请注意Btn.TopLeftCell.Top返回工作表上单元格本身的位置。因此,您可以将按钮的Top属性设置为等于其TopLeftCell.Top属性,以便以编程方式实现对齐。对Left执行相同操作。

答案 1 :(得分:1)

我在这里提到答案:https://stackoverflow.com/a/8303944/7955781

简短:您不能将任何对象绑定到单元格中,只能绑定它。 “您可以将按钮的Left和Top属性设置为Cell的Left / Top。

Sub Tester()
    Dim rng As Range
    Set rng = ActiveSheet.Range("B3")
    With ActiveSheet.OLEObjects("CommandButton1")
        .Top = rng.Top
        .Left = rng.Left
        .Width = rng.Width
        .Height = rng.RowHeight
    End With
End Sub