在VBA中,是否可以将范围设置为相对于另一个范围?

时间:2015-08-05 15:05:08

标签: excel vba

我正在编写一个非常长的脚本,并且我试图找到尽可能多的快捷方式。我需要在开始之前设置很多范围。是否可以替换类似的东西:

Dim Range1 As Range
Dim Range2 As Range 
Dim Range3 As Range
Dim i As Long

i = 2

Set Range1 = ("D" & i)
Set Range2 = ("H" & i)
Set Range3 = ("L" & i)

有些喜欢

Dim Range1 As Range
Dim Range2 As Range 
Dim Range3 As Range
Dim i As Long
Dim y As Long 

i = 2
y = 4

Set Range1 = ("D" & i)
Set Range2 = (Range1.Offset(,y))
Set Range3 = (Range2.Offset(,y))

如果我要设置100个范围,彼此之间的距离相等,那将非常有用。如果我要使用100个范围,我是否需要像我这里一样对每个范围进行调暗?或者我可以做"设置RangeN作为范围,其中N是1到100之间的每个整数?"

提前致谢。

1 个答案:

答案 0 :(得分:2)

你可以使用字典。

Sub ex()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim i As Integer, y As Integer
Dim key
y = 4
For i = 0 To 2
    dict.Add i, Range("D2").Offset(, y * i)
Next
For Each key In dict
    dict(key).Value = "test" & key
Next
End Sub

dict(i)将是一个范围,你可以做任何你正常的事情。