我有一个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
有没有办法将按钮分配给单元格?或者在点击时激活按钮后面的单元格?
提前致谢。
答案 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
“