2017-02-20 108 views
0

我想设置一个对象的属性,它是类对象数组的一部分,用于Excel中的VBA。设置类对象数组属性

的代码看起来是这样的:

Dim myClass(5) as class1 
Dim i as integer 

For i = 0 to 5 
    set myClass(i) = New class 
    myClass(i).myProperty = "SomeValue" 
Next i 

类代码很简单:

Private pmyProperty as string 

Public Property Let myProperty(s as string) 
    pmyProperty = s 
End Property 
Public Property Get myProperty() as string 
    myProperty = pmyProperty 
End Property 

然而,当我运行它,我得到一个编译错误 “预期:列表分隔符。”这点击myClass(i).myProperty =“SomeValue”一行。

如何设置作为数组一部分的类对象的属性的值?

任何帮助将是伟大的!


所以实际的代码如下......

模块代码:

Public Sub main_sb_BillingApp() 


    Dim intCountComplete As Integer 
    Dim intLastRow As Integer 
    Dim Line() As clsLine 
    Dim i As Integer, x As Integer 

    intCountComplete = WorksheetFunction.CountIf(Sheets(WS_NAME).Columns(COL_W_COMPLETE), "Yes") 
    intLastRow = Sheets(WS_NAME).Cells(LAST_ROW, COL_W_COMPLETE).End(xlUp).Row - 1 

    ReDim Line(intCountComplete - 1) 

    For i = ROW_W_HEADER + 1 To intLastRow 

     If Sheets(WS_NAME).Cells(i, COL_W_COMPLETE) = "Yes" Then 

      Set Line(x) = New clsLine 
      Line(x).Row = i 
      x = x + 1 

     End If 

    Next i 

End Sub 

类代码:

Private pDate As Date 
Private pUJN As String 
Private pDesc As String 
Private pCharge As Currency 
Private pCost As Currency 
Private pMargin As Double 
Private pComplete As Boolean 
Private pRow As Integer 

Public Property Let Row(i As Integer) 
    pRow = i 
    Update 
End Property 
Public Property Get Row() As Integer 
    Row = pRow 
End Property 

Private Sub Update() 

    With Sheets(WS_NAME) 

     pDate = .Cells(pRow, COL_W_DATE) 
     pUJN = .Cells(pRow, COL_W_UJN) 
     pDesc = .Cells(pRow, COL_W_DESC) 
     pCharge = .Cells(pRow, COL_W_CHARGE) 
     pCost = .Cells(pRow, COL_W_COST) 
     pMargin = .Cells(pRow, COL_W_MARGIN) 

     If .Cells(pRow, COL_W_COMPLETE) = "Yes" Then 
      pComplete = True 
     Else 
      pComplete = False 
     End If 

    End With 
End Sub 
+2

它是VB.NET *或* vba *或* vbscript? – Plutonix

+0

显示相关的'class'代码 – user3598756

+0

我使用的代码是excel的VBA。 – Nicolas

回答

4

Line是VBA保留关键字,所以你令编译器感到困惑。更改您的对象数组的名称,它的工作原理:

Dim lineArray() As clsLine 
'... 

     Set lineArray(x) = New clsLine 
     lineArray(x).Row = i  
+0

更改名称并完美工作!谢谢你的帮助! – Nicolas