如何在VBA中获取数组中项目的范围地址?

Sub sel_to_array() Dim arr As Variant Dim i Sheets("Ps").Activate Sheets("Ps").Range("C6").Select Range(Selection, Selection.End(xlDown)).Select 'arr = ActiveCell.CurrentRegion.Value arr = Selection For Each i In arr MsgBox i If Round(i, 0) = Round(proj_cbox.Value, 0) Then GoTo 1: End If Next i End Sub 

下面是它的作用:当它find相等的匹配时,我想知道它的单元位置是什么,例如A3A13

尝试这个

 Sub sel_to_array() Dim arr As Range, rng As Range, cell As Range Dim lastRow As Long Sheets("Ps").Activate lastRow = Sheets("Ps").Range("C" & Rows.Count).End(xlUp).Row If lastRow <= 5 Then Exit Sub Set rng = Range("C6:C" & lastRow) For Each cell In rng If Round(cell.Value, 0) = Round(proj_cbox.Value, 0) Then MsgBox cell.Address End If Next End Sub 

不知道你为什么弹跳范围到一个数组。 如果这不是真的需要你可以试试这个:

 Sub sel_to_address() Dim MyRange As Range For Each MyRange In Range(Sheets("Ps").Range("C6"), Sheets("Ps").Range("C6").End(xlDown)) MsgBox MyRange.Value If Round(MyRange.Value, 0) = Round(proj_cbox.Value, 0) Then MsgBox MyRange.Address End If Next MyRange End Sub 

尝试:

 MsgBox i.Address 

或者你可以做到这一点

 Set arr = Selection 'set here forces arr to a range object If Round(i, 0) = Round(proj_cbox.Value, 0) Then With i.Interior .Pattern = xlSolid .ColorIndex = 36 'Light Yellow End With Else i.Interior.ColorIndex = xlNone End If 

这将遮蔽所有与淡黄色匹配的细胞,并清除所有没有的细胞的阴影。