问题描述
因此,我不得不编写两个几乎相同的代码块来遍历我的两个命名范围。但是,我知道命名范围的大小和形状将始终彼此相同,甚至始于同一列(不同的行),并且还需要将它们粘贴到彼此相邻的两列中,所以我觉得应该这样可以在一个代码块中实现,但甚至都无法考虑如何开始对其进行攻击。例如。每月现金支付在数组A10:D20中,损益支付每月在数组A40:D50中。
有人有任何想法吗,请谢谢你?
For Each Row In Range(Names("Cash_Payments_Monthly")).Rows
LastRow = wsDashData.Cells(Rows.Count,14).End(xlUp).Row
Row.copy
wsDashData.Range("n" & LastRow + 1).PasteSpecial _
Paste:=xlPasteValues,_
Transpose:=True
Next Row
For Each Row In Range(Names("PL_Payments_Monthly")).Rows
LastRow = wsDashData.Cells(Rows.Count,15).End(xlUp).Row
Row.copy
wsDashData.Range("o" & LastRow + 1).PasteSpecial _
Paste:=xlPasteValues,_
Transpose:=True
Next Row
解决方法
假设工作簿中还有其他命名范围,则应首先创建要搜索的命名范围白名单数组,然后遍历该数组,将现有代码的单个副本嵌入该循环中。
Dim myranges()
Dim c As Integer 'counter
myranges = Array("Cash_Payments_Monthly","PL_Payments_Monthly")
For c = 0 To UBound(myranges)
For Each Row In Range(myranges(c)).Rows
...the rest of your code,but just one instance of it :-) ...
Next c