如何标记 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
一维数组是基于 0 的,除非您在模块顶部 Option Base 1
。我使用 Ubound
使其适用于这两种情况。
第一次插入之前的第 20 行在第一次插入之后变为 22,在接下来的三个插入之后变为 27。这就是为什么上面的代码从最后一个数组元素开始插入,当然,使用另一个数组中相应的行数...
请测试它并发送一些反馈。
我正在尝试构建一个应该插入指定编号的宏。指定行号下方的行数。到目前为止,这是我尝试过的方法:
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
一维数组是基于 0 的,除非您在模块顶部
Option Base 1
。我使用Ubound
使其适用于这两种情况。第一次插入之前的第 20 行在第一次插入之后变为 22,在接下来的三个插入之后变为 27。这就是为什么上面的代码从最后一个数组元素开始插入,当然,使用另一个数组中相应的行数...
请测试它并发送一些反馈。