0

我有每 X 条记录填充一个空白行的代码。我想要做的是有一些代码,然后将一些静态文本插入到那些空行中的单元格中。这是我添加空白行的内容...代码不是我的全部,我是从互联网上获取的。我需要它做的是将静态文本填充到它正在创建的空白行中。然后继续填充并添加每 50 条记录。谢谢!

**********
Sub InsertRowEveryXrows()

   Dim rw As Long
   Dim lr As Long
   Dim cnt As Long
   lr = Range("A" & Rows.Count).End(xlUp).Row
   rw = 2
   cnt = 1
   Do
    If cnt = 50 Then
       Rows(rw).Insert Shift:=xlDown
       cnt = 1

    Else
       cnt = cnt + 1
    End If
    rw = rw + 1
   Loop While rw <> lr
End Sub
*****************
4

2 回答 2

0

我在代码中添加了注释以显示发生了什么,但这对我有用,应该更快一些。

Public Sub Sample()
Dim WkSht   As Worksheet
Dim LngLR   As Long 'Last Row
Dim LngCR   As Long 'Current Row

'Connect to the worksheet
Set WkSht = ThisWorkbook.Worksheets("Sheet1")

    'Get the last row so we know when to stop
    LngLR = WkSht.Range("A" & WkSht.Rows.Count).End(xlUp).Row

    LngCR = 51 '51 to account for the first row being a header

    'Keep adding the 50th row until when would end up past the last row
    Do Until LngCR > LngLR

        'Add the new row
        WkSht.Rows(LngCR).Insert Shift:=xlDown

        'Populate it
        WkSht.Range("A" & LngCR) = "Your static text"

        'Increase the last row as it will now be one more
        LngLR = LngLR + 1

        'Got to the next 50th
        LngCR = LngCR + 50
    Loop

Set WkSht = Nothing

End Sub
  • 我将工作表作为一个变量连接到,因为这是一个很好的做法,您现在所做的工作正常,但阅读起来可能会令人困惑,如果代码变得更大的歧义,会导致您意想不到的事情发生。
  • 我一次增加 50 而不是 1,从技术上讲,这使它快了 50 倍,但在今天的计算机上这一切都是模糊的 :)
  • 每次添加一行时,您的代码都没有考虑到最后一行向下移动的情况。
于 2016-07-26T19:35:39.080 回答
0

您唯一要做的就是询问 cnt 何时达到 51 并添加静态文本(假设列为 1),如下所示:

 Sub InsertRowEveryXrows()

   Dim rw As Long
   Dim lr As Long
   Dim cnt As Long
   lr = Range("A" & Rows.Count).End(xlUp).Row
   rw = 2
   cnt = 1
   Do
     If cnt = 50 Then
         Rows(rw).Insert Shift:=xlDown
         cnt = 1
     Else
        if cnt = 51 then
          cells(rw,1) = "your static text"
        else
         cnt = cnt + 1
        End If
     End If
     rw = rw + 1
   Loop While rw <> lr

 End Sub

告诉我怎么回事,希望对你有帮助!

于 2016-07-26T18:58:51.267 回答