2017-05-30 184 views
0

我在工作表上读取范围并将其放入数组中。VBA-从范围数组返回单元格地址

Dim Arr() As Variant 
Arr = Range("B3:G11") 
Dim R As Long 
Dim C As Long 
For R = 1 To UBound(Arr, 1) 
    For C = 1 To UBound(Arr, 2) 
     Debug.Print Arr(R, C) 
    Next C 
Next R 

这将返回单元格的值。有没有办法获得细胞的地址?!

预先感谢您。

回答

1

使用此代替Debug.Print Arr(R, C)

Debug.Print Cells(R+2, C+1).Address(1,1) 

人们还可以填补范围的数组:

Dim Arr() As Range 
Dim rng As Range 
ReDim Arr(1 To Range("B3:G11").Rows.Count, 1 To Range("B3:G11").Columns.Count) As Range 
For Each rng In Range("B3:G11") 
    Set Arr(rng.Row - 2, rng.Column - 1) = rng 
Next rng 
Dim R As Long 
Dim C As Long 
For R = 1 To UBound(Arr, 1) 
    For C = 1 To UBound(Arr, 2) 
     Debug.Print Arr(R, C).Address 
    Next C 
Next R 
+0

感谢ü这么多的快速反应..ü?请解释什么呢R + 2 ,C + 1和(1,1)是什么意思? – user3286479

+0

'Cells(Row,Column)'我们只是将第一个左上角设置为B3。由于R和C从1开始,我们需要移动单元格。这也可以用'Range(“B3:G11”)来完成。单元格(R,C).Address(1,1)'然后引用范围而不是整个表单。 '(1,1)'使参考绝对,'(0,0)'将返回一个相对参考。 –