【问题标题】:How to automatically add text to inserted rows如何自动将文本添加到插入的行
【发布时间】:2018-03-27 16:37:47
【问题描述】:

下面是一些代码,我必须在工作表上的每个预先存在的行项下方自动插入 6 行。有没有办法用预渲染文本填充 6 行中的每一行?文本可以分别是每行'item1'、'item2'、'item3'...

Dim lastRow As Long
lastRow = Range("B" & Rows.Count).End(xlUp).Row

Dim rowCnt As Long
For rowCnt = lastRow To 2 Step -1

Range("B" & rowCnt).Resize(6, 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove    

Next

提前感谢您的帮助!

【问题讨论】:

  • 研究使用.Offset 对象的.Offset 方法

标签: excel vba


【解决方案1】:

尝试将文本添加为​​转置数组。

dim itms as variant

itms = array("item1", "item2", "item3", "item4", "item5", "item6")

...

For rowCnt = lastRow + 1 To 2 Step -1

    Range("B" & rowCnt).Resize(6, 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove    
    Range("B" & rowCnt).Resize(6, 1) = application.transpose(itms)

Next

【讨论】:

  • 这在大部分情况下都有效,谢谢!唯一没有填充的是最后一行,我猜是因为技术上没有添加 6 行。无论如何,关于如何修复代码来解决这个问题的想法?
  • For rowCnt = lastRow To 2 Step -1 更改为For rowCnt = lastRow + 1 To 2 Step -1
  • 做到了,非常感谢您的及时回复!
【解决方案2】:

这是一种方法。

Sub x()

Dim lastRow As Long

lastRow = Range("B" & Rows.Count).End(xlUp).Row

Dim rowCnt As Long, i As Long

For rowCnt = lastRow To 2 Step -1
    Range("B" & rowCnt).Resize(6, 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("B" & rowCnt + 7).Resize(6).Value = Application.Transpose(Array("Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6"))
Next

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    相关资源
    最近更新 更多