如何访问已过滤列表中的Range以检索值? VBA

时间:2013-10-28 16:14:29

标签: excel vba excel-vba

我正在尝试访问已过滤列表中的C(Number):D(Number)中的值,但是我似乎做错了,因为MsgBox从不显示。

'Filter only numeric values 
With MaterialListSheet
        .AutoFilterMode = False
        .Range("B1").AutoFilter Field:=1, Criteria1:="0*"
    End With

Set rangeInventory = InventorySheet.Range("N1:N" & Rows.Count)
' I had Set rangeMaterialList = MaterialListSheet.Range("B1:B" & Rows.Count) in the beginning but I realized If I need C and D i'm only selecting B 

    Set rangeMaterialList = MaterialListSheet.Range("B1:F" & Rows.Count)

    For Each CellML In rangeMaterialList.SpecialCells(xlCellTypeVisible)
        BomCodesToSplit = CellML.Range("C" & Rows.Row & ":D" & Rows.Row).Values
        MsgBox BomCodesToSplit
        For Each CellI In rangeInventory.SpecialCells(xlCellTypeVisible)

        Next CellI

Next CellML

试过这个但没有运气:

BomCodesToSplit = MaterialListSheet.Range("C" & Rows.Row & ":D" & Rows.Row).Values

我想选择

C1:D1
C2:D2
C3:D3
.
.
.

这意味着这样根据循环索引选择它

Cn:Dn

在其他一些编程语言中,我会使用循环的索引,但由于我是VBA的新手,我不知道如何做到这一点。

如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

不完全确定你在做什么,但你可以使用迭代变量属性。

在迭代某个范围的for each循环中,最好使用Range类型变量来获取intellisense

例如

Dim cell as Range
for each cell in Range("A1:A10")
    debug.? cell.Value, cell.Address, cell.Row, cell.Column
next

注意:当您键入cell.时,您将获得智能感知,该智能感知仅列出您正在使用的对象当前可用的属性。