宏 - 使用相对OFFSET,工作表引用函数添加行,自动填充文本和公式

时间:2012-11-06 14:23:33

标签: excel excel-vba vba

我有很大的问题,我找不到答案。也许你可以遏制我。

  1. 在Sheet“Intro”中我有第(5)行,其中有公式: (i)C5(='Sheet1'!$A$1); (ii)I5(=OFFSET('Sheet1'!$A$1;17;1;1;)); (iii)在这一行中也是我的表格行号,i。 e B5(=1)。此数字“1”也是Sheet1.enter代码的超链接

  2. 我有Macro,每次自动插入最后一行后的新行,i。即当我填充5行并运行我的宏时,它会插入第6行。因此,必须使用我的公式自动填充此行,我在上面提到过。

  3. 更具体地说,新行应该像这样填写: 当新行为6时: (i)C6(='Sheet2'!$A$1); (ii)I6(=OFFSET('Sheet2'!$A$1;17;1;1;)); (iii)B6(=2)。此数字“2”也是Sheet2的超链接。 当新行为7时: (i)C7(='Sheet3'!$A$1); (ii)I7(=OFFSET('Sheet3'!$A$1;17;1;1;)); (iii)B7(=3)。此数字“3”也是Sheet3的超链接。 当新行为8时: (i)C8(='Sheet4'!$A$1); (ii)I8(=OFFSET('Sheet4'!$A$1;17;1;1;)); (iii)B8(=4)。这个数字“4”也是Sheet4的超链接。

    和......

    也许你可以帮助我?

    事先谢谢你。

1 个答案:

答案 0 :(得分:0)

由于您已经有一个宏,我会扩展宏以及一些额外的功能来处理这个问题。

通过VBA可以很容易地设置单元格的公式。

Sub createRow()
    Dim i As Integer
    i = 5
    Dim sheetOffset As Integer
    sheetOffset = -4

    FillInRow i, sheetOffset
End Sub

Sub FillInRow(i As Integer, sheetOffset As Integer)
    Sheets("Intro").Range("C" & i).Formula = "=Sheet" & CStr(i + sheetOffset) & "A1"
    Sheets("Intro").Range("I" & i).Formula = "=OFFSET(Sheet " & CStr(i + sheetOffset) & "3!$A$1;17;1;1;"
End Sub

您应该仔细设置偏移量。

我无法理解“B”栏中您需要的内容。但是看到这个例子,我相信你可以扩展它。

如果这太模糊,请说出来,我可以精心制作。