使用VBA循环来select一系列variables

我在VBA脚本中有一系列variables(每个都声明为一个范围),如下所示:

r1 = range r2 = range ... r100 = range 

理想情况下,我想使用for循环来连续select,复制和粘贴(转置)每个范围。 我正在通过反复试验来编写我的代码,而且我对VBA几乎不了解。 目前我正在使用如下循环:

 For i = 0 To 99 Step 1 Dim Num As Integer Num = i + 1 Num = CStr(Num) Dim R As Range R = "r" & Num R.Select Selection.Copy Range("TARGET RANGE").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Next i 

任何人都可以帮助我debugging此循环和/或find实现这一目标的最佳方式?

你需要Set一个Range对象 。

 Dim Num As Integer, R As Range For i = 0 To 99 Step 1 Num = i + 1 SET R = RANGE("r" & Num) R.Copy Destination:=Range("TARGET RANGE") Next i 

目前还不完全清楚你打算做什么,但上面应该做的是预期的。

你可以使用For Each ... In循环。

 Dim Bag As New Collection Dim Target As Range Dim r As Range Bag.Add [A1:A50] Bag.Add [C3:F100] Bag.Add [Sheet2!H1:L1] Bag.Add ['[Another file.xlsx]Sheet1'!A1:B100] Set Target = [Output!A1] For Each r In Bag ' Size target to be the same dimensions as r transposed Set Target = Target.Resize(r.Columns.Count, r.Rows.Count) ' transpose and copy values Target.Value = Application.Transpose(r.Value) ' shift target down to next empty space Set Target = Target.Offset(Target.Rows.Count) Next