在一个代码块中循环遍历每个命名范围的第一行

问题描述

因此,我不得不编写两个几乎相同的代码块来遍历我的两个命名范围。但是,我知道命名范围的大小和形状将始终彼此相同,甚至始于同一列(不同的行),并且还需要将它们粘贴到彼此相邻的两列中,所以我觉得应该这样可以在一个代码块中实现,但甚至都无法考虑如何开始对其进行攻击。例如。每月现金支付在数组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