Class 访问VBA类数组
我试图使用一些类,将持有发票数据,我似乎无法让它工作。我只希望它将发票的详细信息保存在数组中。这是密码,也许有人能猜出来。 另外,我想让LineItems随机选取一些产品项,但还不知道如何做到这一点。我这样做是为了最终从ms access通过web服务发送数据 下面是struct_XOrder的其他代码:Class 访问VBA类数组,class,vba,service,web,module,Class,Vba,Service,Web,Module,我试图使用一些类,将持有发票数据,我似乎无法让它工作。我只希望它将发票的详细信息保存在数组中。这是密码,也许有人能猜出来。 另外,我想让LineItems随机选取一些产品项,但还不知道如何做到这一点。我这样做是为了最终从ms access通过web服务发送数据 下面是struct_XOrder的其他代码: Public OrderNumber As String Public ClientShortName As String '"LineItems" is an array with el
Public OrderNumber As String
Public ClientShortName As String
'"LineItems" is an array with elements defined as struct_LineItem
'See Complex Types: Arrays in Microsoft Office 2003 Web Services Toolkit Help
'for details on implementing arrays.
Public LineItems As Variant
Public OrderError As String
这是struct_行项目:
Public ProductSKU As String
Public Qty As Long
Public UnitPrice As Variant
Public ItemComment As String
Public ItemError As String
这是我的主要代码
Sub webservicetest()
Dim NewOrder As struct_XOrder
Dim LineItems(1 To 2) As Variant
Dim Xline(1 To 2) As Variant
Set Xline() = struct_LineItem
Set NewOrder = New struct_XOrder
Set NewOrder.LineItems() = New struct_LineItem
Set NewOrder.LineItems() = New Xline
'Xline = New struct_LineItem
Xline(1).ItemComment = "items"
Xline(1).Qty = 10
NewOrder.LineItems() = Xline()
NewOrder.ClientShortName = "DemoClient"
NewOrder.OrderNumber = "12345"
'Xline(1).ItemComment = "item1"
'Xline(1).Qty = 5
Debug.Print NewOrder.ClientShortName
Debug.Print NewOrder.OrderNumber
'For i = LBound(Xline) To UBound(Xline): Debug.Print Xline(i): Next
'Debug.Print Xline(1).ItemComment
'Debug.Print Xline(1).Qty
End Sub
有关解释,请参见注释 在VBA中使用
Type
来创建结构。此外,您不需要使用设置
此外,使用Option Explicit可以在使用VBA时要求变量声明,除非您想要噩梦
这些都可以放在同一个模块中
有关解释,请参见注释 在VBA中使用
Type
来创建结构。此外,您不需要使用设置
此外,使用Option Explicit可以在使用VBA时要求变量声明,除非您想要噩梦
这些都可以放在同一个模块中
非常感谢。这更有意义。我会摆弄它,让它做我想做的事情。struct_xorder类模块被修改了,有没有办法让它保持“lineitems as variant”?它会导致错误@enderlandBTY网络服务位于,如果这有助于任何人更好地理解。非常感谢。这更有意义。我会摆弄它,让它做我想做的事情。struct_xorder类模块被修改了,有没有办法让它保持“lineitems as variant”?它会导致错误@enderlandBTY网站服务位于,如果这有助于任何人更好地理解。
'use this
Option Explicit
'VBA structs are defined like the following
'and do not need "new" (similar to other languages)
'when creating them
Type struct_LineItem
ProductSKU As String
Qty As Long
UnitPrice As Variant
ItemComment As String
ItemError As String
End Type
Type struct_XOrder
OrderNumber As String
ClientShortName As String
'make this more clear
LineItems() As struct_LineItem
OrderError As String
End Type
Sub webservicetest()
Dim NewOrder As struct_XOrder
Dim LineItems(1 To 2) As Variant
Dim Xline(1 To 2) As struct_LineItem
'you can't do this, you need to specify which element
'in XLine you want to set
'Set Xline() = struct_LineItem
Dim myStruct As struct_LineItem
Xline(1) = myStruct
'you don't need "set"
NewOrder.LineItems = Xline()
'this won't update as if it's a reference, btw
Xline(1).ItemComment = "items"
Xline(1).Qty = 10
NewOrder.LineItems = Xline()
NewOrder.ClientShortName = "DemoClient"
NewOrder.OrderNumber = "12345"
Debug.Print NewOrder.ClientShortName
Debug.Print NewOrder.OrderNumber
'don't do ":" as this makes code unbearably not readable...
'For i = LBound(Xline) To UBound(Xline): Debug.Print Xline(i): Next
Dim i As Integer
For i = 1 To UBound(NewOrder.LineItems)
Debug.Print NewOrder.LineItems(i).ItemComment
Next i
End Sub