在将行插入相对位置后添加总和的宏

时间:2014-03-11 17:35:46

标签: excel excel-vba vba

我是excel的新手。我花了几天时间弄清楚如何创建一个按钮宏,相对于按钮的位置插入一个新行。我现在可以用我的宏做这个。但是,我想要做的是在刚刚创建的新行中预先填充总和公式。请参阅屏幕截图以获得更好的说明。 http://i.imgur.com/V6dyyXb.jpg

在这个特定的情况下,它会在单元格C10中创建一个总和公式= sum(E10:G10),但我不希望它专门去那些点,我需要它们都是相对的。能帮到我吗,我是一个完整的宏观菜鸟。

这是我的插入宏:

Sub INSERT_NEW_ROW()
ActiveSheet.Shapes(Application.Caller).TopLeftCell.EntireRow.Select
Selection.INSERT Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

我甚至不确定这是否可行,但如果是的话会非常酷。

1 个答案:

答案 0 :(得分:0)

感谢你自己解决这个问题。干得好!我的直觉反应是使用按钮的偏移量,它看起来像是用于相关参考:

Sub INSERT_NEW_ROW()
ActiveSheet.Shapes(Application.Caller).TopLeftCell.EntireRow.Select
Selection.INSERT Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

ActiveSheet.Shapes(Application.Caller).TopLeftCell.Activate
ActiveCell.Offset(-1,1).Formula = "=SUM(E" & ActiveCell.Row - 1 & ":G" & ActiveCell.Row - 1 &")"
End Sub

有一些方法可以让它更具动态性,但只要你的工作表每次都有相同的格式,这应该可行。

这样做是将按钮所覆盖区域的左上角单元格设置为范围。然后它填充上面一行中的公式(偏移中的-1)和右边的一列(偏移中的1)。由于按钮在工作表中比我们要引用的按钮大一行,因此请使用ActiveCell.Row - 1填充公式以获取正确的行。