我必须在 excel 中编写一些 VBA 代码才能与我的 VB.NET 程序一起使用,而且我正在努力学习 VBA 的基础知识,因为我以前没有使用过它。我找到了一些代码,可以让我从临时表中获取值并将它们直接放在 excel 电子表格的适当字段中。我正在填充采购订单文档,因此传递的信息是小计、增值税、运输、总计等。
这是我用来填充单个单元格的代码:
'get quantity
strQry = "SELECT quantity from [temp];"
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = cn
.Open strQry
End With
'append data to document
Worksheets("PurchaseOrder").Range("D22").CopyFromRecordset rs
quantity = rs.Fields("quantity") 'setting the quatity in a variable
最后一行代码是我尝试将数量的值存储在一个变量中,我需要用它来计算小计,因为小计没有传递给 excel。填充单元格的代码工作正常,它只是将数据放入一个变量中以进行操作,我正在努力解决这个问题。直接从数据库中填充单元格可以正常工作,但最后一行出现错误。
在将数量存储在变量中之后,我还想将单位成本存储在变量中,在开始时使用等效子字符串删除 £ 符号,将其转换为小数,然后将单位成本乘以数量以获得小计。
我尝试使用以下代码:
'get price
strQry = "SELECT costPerUnit from [temp];"
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = cn
.Open strQry
End With
'append data to document
Worksheets("PurchaseOrder").Range("N22").CopyFromRecordset rs
costPerUnit = Right(rs(0), Len(costPerUnit) - 1) 'setting the cost per unit in a variable
subtotal = costPerUnit * quantity
Worksheets("PurchaseOrder").Cells("Q47").Value = "£ " & subtotal
任何帮助表示赞赏。谢谢你。
行。因此,在填充 Recordset 之前,您已经完成了正确的操作,然后您必须看到 Recordset 更像是一张表,并且可以没有或有多行多列。首先,您必须检查查询是否返回任何结果或 Recordset 是否为空(
rs.BOF
和rs.EOF
为真)。然后您将遍历行 (rs.MoveNext
)。要访问单个值,您可以给出列的索引或列名。以下示例循环遍历行和列,但也在末尾再次提取列“数量”: