无法从集合中访问对象

时间:2018-03-14 15:22:44

标签: vba excel-vba-mac

对于毫无疑问是一个简单问题的道歉 - 我对编码很新,所以即使从现有信息中找到答案也很难。

总之...

我已经定义了一个具有4个值的类(1 x Single,1 x String(用作键)和2 x Range)

然后我设法根据类设置Collection并填充集合,并且可以使用Debug.Print打印整个集合的值,并计算集合中的项目数。

但我无法通过使用索引位置或指定的键来访问集合中的单个对象。

尝试时我

  

运行时错误438 - 对象不支持此属性或方法。

底层电子表格是一个4列,200行表格,最终目标是将每一行作为一个对象,然后使用在一组单独的代码中定义的变量填充对象(行)的给定位置

无论如何,Class(PriceLadder)代码是:

Public ladderPriceKey As String
Public ladderPrice As Single
Public layMatchedLocation As Range
Public backMatchedLocation As Range

然后模块代码是:

Sub initialiseLadder()


'initialise ladder as collection

Dim ladder As Collection
Set ladder = New Collection

Dim cell As Range
Dim price As PriceLadder

'for each cell in Column A

For Each cell In Sheets(2).Range("A11:A220") ' & Range("A" & Rows.Count).End(xlUp).Row)


        ' create a new priceladder object

        Set price = New PriceLadder

        ' fill the data
        price.ladderPrice = cell
        price.ladderPriceKey = cell
        Set price.layMatchedLocation = Range(cell.Offset(0, 2).Address(RowAbsolute:=True, ColumnAbsolute:=True))
        Set price.backMatchedLocation = Range(cell.Offset(0, 3).Address(RowAbsolute:=True, ColumnAbsolute:=True))

        ' add the price to the collection of ladder prices
        ladder.Add price, price.ladderPriceKey 'price.ladderPriceKey set as the key for the collection object

    Next


Debug.Print ladder.Count
Debug.Print ladder("10")

 '  Dim p As PriceLadder
'For Each p In ladder
'Debug.Print "PriceKey: " & p.ladderPriceKey & vbTab & "BackLocation: " & p.backMatchedLocation.Address & vbTab & "LayLocation: " & p.layMatchedLocation.Address & vbTab & "Price: " & p.ladderPrice()


'    Next
End Sub

产生错误的行是:

Debug.Print ladder("10") 

其中“10”是从price.ladderKeyPrice作为键添加的值之一

真的很抱歉,如果这是一个可怕的新手型问题。

感谢您提供的任何帮助。

理查德

0 个答案:

没有答案