对于......接下来在Excel中扩展范围

时间:2013-09-25 06:19:22

标签: excel-vba vba excel

我在报告的单元格D5:D103中有一系列公式,它们链接到书中的另一张纸。列A:C包含文本结果,列D具有$ amount作为结果。 A4:D4包含数据的标题,A1:D3是描述报告的一般标题。最后一行的位置将每月更改,可以是> 103,可以是<103。

在每16行数据之后,我需要从工作表中的命名范围中插入3行4列,并在3行中的第2行的D列中插入总共16行。然后我在下面添加一个分页符(由其他要求决定的粗分页练习)。

以下代码实现了大部分内容: -

Dim Formula1 As String

Formula1 = "=SUM(R[-17]C:R[-2]C)"

For i = 21 To (Range("a5", Range("d4").End(xlDown)).Rows.Count + 4) Step 19

    Range("Total_credit").Select
    Selection.Copy

    Range("a" & i).Select

    Selection.Insert Shift:=xlDown

    Range("a" & i).Offset(1, 3) = Formula1

    Selection.Offset(3).PageBreak = xlPageBreakManual

Next i

但是,我在底部留下了19行数据块,它应该是带有粘贴文本的16个块的16个块,并且每个块下面总共有一个(理想情况下,最后一个序列中没有空行,但是如果我可以得到其余的权利,我可以忍受。)当我将数据块放大几行时,似乎也会出现同样的问题,即最后一个总数将始终位于同一位置(D117)。

似乎i的值正在递增每个循环,但这似乎没有在过程中反映出来。我已经尝试了各种各样的东西并彻底搜查无济于事,我的脑袋现在正在旋转。我相信有人会立刻看到我出错的地方,看起来应该是一个简单的修复。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我刚刚在您的代码中添加了这个来管理'for loop'限制

Dim row_count As Double

row_count = Range("a5", Range("d5").End(xlDown)).Rows.Count
row_count = row_count + Round(row_count / 16) * 3 + 4
For i = 21 to row_count step 19 'change limit to the variable "row_count"

这应该注意'For loop'限制。或者您可以将其更改为Do While循环,您的受控变量可以更改。像这样:

Dim Formula1 As String
Dim row_count As Long

Formula1 = "=SUM(R[-17]C:R[-2]C)"
'initialize variable
row_count = Range("a5", Range("d5").End(xlDown).Address).Rows.Count + 4 
i = 21 'initialize variable
'I added this before the loop to make the appearance clean
Cells.PageBreak = xlPageBreakNone 
Do While i < row_count
    Range("Total_credit").Copy: Range("a" & i).Insert xlDown
    Range("a" & i).Offset(1, 3) = Formula1
    Range("a" & I).Offset(3, 0).PageBreak = xlPageBreakManual
    i = i + 19 'increment variable
    're-initialize variable
    row_count = Range("a5", Range("d5").End(xlDown).Address).Rows.Count + 4 
Loop

希望这就是你所需要的。