Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在VBA中,是否可以将一个范围设置为相对于另一个范围?_Excel_Vba - Fatal编程技术网

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

Excel 在VBA中,是否可以将一个范围设置为相对于另一个范围?,excel,vba,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 Ra

我正在写一个很长的脚本,我正试图找到尽可能多的捷径。在开始之前,我需要设置很多范围。是否有可能替换如下内容:

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个量程,我是否需要像这里一样对每个量程进行调暗?或者我可以做一些类似“将Range设置为Range,其中N是1到100之间的每个整数”的事情吗


提前谢谢。

你可以用字典

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)将是一个范围,你可以用它做任何你平常想做的事情

这看起来是在正确的轨道上。你能详细说明一下Dim键线的含义,以及它与输出的关系吗?谢谢。他们的dim key只是用于稍晚一点的“for each key”,您不必使用它,但我发现它比执行“for I=0 to dict.count-1”之类的操作更好,特别是如果您不确定您的键可能是什么。它允许您迭代所有键,不管它们是什么。