我正在开发一个VBA模块来处理报价项目列表。我当前的目标是尝试从引用列表中堆叠全部或部分内容,我正试图弄清楚如何跟踪它们。
项目列表没有一致数量的项目;一个可能是一个项目,另一个可能是一百个。
系统将货物分为四大类(管道,板,梁和其他),以便选择使用哪种计算器逻辑。
有没有办法动态创建变量来跟踪各个订单项?例如,部署一个伪代码点:
Public Qty & "_" & Class & "-" & ClassCount As Integer
有没有办法让这样的工作成功,或者有更好的方法吗?
答案 0 :(得分:1)
我在课堂上有点粗略,我真的应该开始更多地看待它们,因为它们非常强大 - 这个链接会给你更多信息:http://www.cpearson.com/excel/classes.aspx
扩展Jasons评论这是建立课程的一种方式,我确信有更好的方法:
将类模块添加到项目中并将模块命名为cls_Quote
将此代码添加到类模块:
Option Explicit
Private sQuote As String
Private lQuantity As Long
Private lAnotherValue As Long
Public Property Let Quote(Value As String)
sQuote = Value
End Property
Public Property Get Quote() As String
Quote = sQuote
End Property
Public Property Let Quantity(Value As Long)
lQuantity = Value
End Property
Public Property Get Quantity() As Long
Quantity = lQuantity
End Property
Public Property Let AnotherValue(Value As Long)
lAnotherValue = Value
End Property
在普通模块中添加以下代码:
Option Explicit
Private MyQuotes As Collection
Public Sub Test()
Dim MyNewQuote As cls_Quote
Dim x As Long
Dim vIQuote As Variant
Dim FinalSum As Long
Set MyQuotes = New Collection
For x = 1 To 10
Set MyNewQuote = New cls_Quote
With MyNewQuote
.Quantity = x
.Quote = "Pipes"
.AnotherValue = x * 5
End With
MyQuotes.Add MyNewQuote
Next x
For Each vIQuote In MyQuotes
If vIQuote.Quote = "Pipes" Then
FinalSum = FinalSum + vIQuote.Quantity
End If
Next vIQuote
MsgBox "Total sum of Pipes is: " & FinalSum
End Sub
注意:在For x循环中,我每次都要创建一个新的类实例。
现在只需等待具有更多类编程经验的人来展示更好的方法。 :)