我正在使用 Excel 2013 创建 VBA 代码,该代码允许我将数据从一个工作簿(来自 Excel 的发票模板)传输到另一个工作簿(发票日志)。
我需要将发票中的某些单元格转移到日志中。例如:
L4 (includes the invoice number)
L13 (includes the date of the invoice)
L58 (includes the total amount of the invoice)
E13 (Billed to Name of Site)
E25:E53 (includes patient names).
在日志中,我想要:
L4=A2
L13=B2
L58=C2
E13=D2
E25:E53=E2
我想要 E25:E53 范围内的名称计数出现在日志的 F2 单元格中。F2 为数量。
我希望将单元格范围 E25:53(仅限患者姓名)合并为一个单元格,并用分号分隔,例如“John Doe;Mary Ann;Sam Cook”。
此外,每次将新数据输入发票时,我都想从新行开始。日志的第一行将包含标题。请参阅以下链接以查看屏幕截图示例。
(我无法附加实际的 Excel 工作簿。如果您知道更好的方法,请告诉我)。
我当前拥有的代码是:
Sub Button3_Click()
Dim InvoiceNumber As Integer
Dim InvoiceDate As Date
Dim TotalAmt As Currency
Dim BillTO As String
Dim InmateNames As String
Dim Qty As Integer
Worksheets("Invoice").Select
InvoiceNo = Range("L4")
InvoiceDate = Range("L13")
TotalAmt = Range("L58")
BillTO = Range("E13")
Description = Range("E25:E53")
Worksheets("Invoice Log").Select
Worksheets("Invoice Log").Range("A1").Select
If Worksheets("Invoice Log").Range("A1").Offset(1, 0) <> "" Then
Worksheets("Invoice Log").Range("A1").End(x1Down).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = InvoiceNumber
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = InvoiceDate
由于某种原因,代码以“0”作为我的发票号。发票日期、总金额、账单金额和数量列工作正常。但是,患者姓名未填充。
答案1
您已invoicenumber
声明,并且尝试获取其数据,但将值存储在中invoiceno
。
插入Option Explicit
到模块的开头,它将有助于防止这些错误。
答案2
这个例子可以查看使用 excel 用户表单制作的预付发票示例:https://youtu.be/Qr-4of-38DI
在此发票模板中,包含文本框、列表框和按钮的用户表单用于快速输入客户和产品的数据。之前,可以通过文本框在列表中搜索所需数据。然后,当双击列表项或按下回车键时,项目的数据将输入到工作表中。创建的发票可以复制到选定的记录表中。