如何标记 sheet 中的单元格以便宏从中获取值? (Excel VBA)

How do I mark cells in my sheet for a macro to take values from? (Excel VBA)

我正在尝试构建一个应该插入指定编号的宏。指定行号下方的行数。到目前为止,这是我尝试过的方法:

Sub Macro2()
Dim iRow As Long
Dim iCount As Long
Dim i, j As Long
Dim length As Long

arrVal = Array(2, 3, 4) 'no. of rows to add
arrTar = Array(18, 19, 20) 'target row numbers to respectively add the no. rows specified above
length = 3 'length of above array

For j = 1 To length
    iCount = arrVal(j)
    iRow = arrTar(j)
    For i = 1 To iCount
        Rows(iRow).EntireRow.Insert
    Next i
Next j
End Sub

上面的代码是将它应该添加 (2+3+4=9) 的所有行插入到第一行的正下方。 (18).我的代码有什么问题?同样,我只想添加指定的编号。指定行号以下的行数(根据我代码中的数组,第 18 行下方 2 行,第 19 行下方 3 行,等等)

我刚开始使用循环,所以我很困惑在这里做什么。

请测试下一个适配代码:

Sub InsertRows_Arrays()
 Dim sh As Worksheet, iRow As Long, iCount As Long
 Dim arrVal, arrTar, i As Long, j As Long, length As Long

 Set sh = ActiveSheet
 arrVal = Array(2, 3, 4)    'no. of rows to add
 arrTar = Array(18, 19, 20) 'target row numbers to respectively add the no. rows specified above
 length = UBound(arrVal)    'length of above array, in fact is 2. A 1D array is zero based

 For j = LBound(arrVal) To length
    iCount = arrVal(UBound(arrVal) - j): iRow = arrTar(UBound(arrTar) - j)
    For i = 1 To iCount
        sh.rows(iRow + 1).EntireRow.Insert xlUp
    Next i
 Next j
End Sub
  1. 一维数组是基于 0 的,除非您在模块顶部 Option Base 1。我使用 Ubound 使其适用于这两种情况。

  2. 第一次插入之前的第 20 行在第一次插入之后变为 22,在接下来的三个插入之后变为 27。这就是为什么上面的代码从最后一个数组元素开始插入,当然,使用另一个数组中相应的行数...

请测试它并发送一些反馈。