我需要构建多个Dim语句:
Dim p As String
Dim purch As String
Dim counter As Integer
counter = 0
Do While rst.EOF = False
counter = counter+1
p = "Purchase" & counter
purch = "Dim " & p & " As Purchase"
purch
rst.MoveNext
Loop
这会引发编译错误:预期的子,函数或属性
循环正在正确构建我的命令,但我无法从存储它的变量中获取命令。
答案 0 :(得分:2)
代码不是一堆可执行字符串。你不能执行"或者"调用"字符串文字。
purch
Isn' ta有效的可执行指令,无论该变量的值是否包含完全有效的VBA代码 - 就VBA而言,不是代码,那是一个局部变量,什么都没有更多...编译器告诉你,它不知道如何处理什么都不做的指令。
我试图将行拆分为每个budgetCode的一个Purchase对象
您很快就会知道Type
不是对象,并且不会与Collection
一起玩得很好。此外,在一个旋转记录集中有370列,您的生活将比您需要的更加艰难。如果您要重复预算代码,让您的查询返回预算代码并迭代 。
您需要一个类模块 - 最简单的形式,它可能只是一堆公共字段:
'class PurchaseItem
Public ID As Long
Public Name As String
Public PurchaseDate As Date
Public BudgetCode As String
Public TransactionCode As String
'...
现在,当您迭代记录集时,每次都会创建New PurchaseItem
,Add
会创建Collection
:
Dim items As Collection
Set items = New Collection
Dim current As PurchaseItem
Do While Not rst.EOF
Set current = New PurchaseItem
current.ID = rst.Fields("ID").Value
current.Name = rst.Fields("Name").Value
current.PurchaseDate = rst.Fields("Date").Value
current.BudgetCode = rst.Fields("BudgetCode").Value
current.TransactionCode = rst.Fields("TransactionCode").Value
'...
items.Add current
rst.MoveNext
Loop
现在,您拥有items
集合中的所有商品。