龙空技术网

Excel VBA 每天一段代码:以数组方式保存数据

捌贰春秋VBA 5772

前言:

现时姐妹们对“vba代码保存”都比较讲究,看官们都想要剖析一些“vba代码保存”的相关内容。那么小编也在网上收集了一些关于“vba代码保存””的相关内容,希望看官们能喜欢,朋友们一起来学习一下吧!

视频加载中...

如上面视频所示,我们用数组方式,将送货单的数据批量保存到销售记录工作表。

知识点:数组的读取及将数组释放到单元格

如上图所示,arr数组、矩形圈起来的项目是出库单的数据,每条数据共14个项目,所以定义一个n行、14列的brr数组,用以存放我们读取的数据。

如上图所示,将brr数组释放到销售记录工作表,从上到下第一个空白行的位置。

代码写到按钮的 保存_Click()事件

Private Sub 保存_Click()

Dim arr, crr, i%, j%, n%, brr(), rng As Range

'判断表头必填项是否为空

crr = Array([D5], "客户名称", [J5], "联系人", [L5], "电话", [D6], "送货地址", [J7], "制单时间", [L3], "销售单编号", [L7], "总金额", [C10], "第一个产品名称")

For j = 1 To UBound(crr)

If crr(j - 1) = "" Then

MsgBox crr(j) & "不能为空!", vbCritical, "错误!"

crr(j - 1).Activate

Exit Sub

End If

Next j

'判断销售单编号规范性

编号 = [L3]

If Len(编号) <> 13 Or VBA.InStr(编号, "XSD") < 0 Then

MsgBox "销售单编号自动生成,请不要修改!", vbCritical, "错误!"

Exit Sub

End If

'判断录入产品信息的完整性(只允许备注有空值)

Dim MaxR%

MaxR = [C20].End(xlUp).Row

If MaxR < 10 Then Exit Sub

For Each rng In Union(Range("C10:C" & MaxR), Range("F10:G" & MaxR), Range("I10:J" & MaxR))

If rng.Value = "" Then

MsgBox Cells(9, rng.Column) & "不能为空!", vbCritical, "错误!"

rng.Activate

Exit Sub

End If

Next rng

'保存销售单

arr = Range("C9:L" & MaxR)

ReDim brr(1 To UBound(arr) - 1, 1 To 14)

'将数据写入数组brr

For i = 2 To UBound(arr)

n = n + 1

brr(n, 1) = [L3].Value '销售单编号

brr(n, 2) = Format([J7].Value, "yyyy/mm/dd") '制单时间

brr(n, 3) = [D5].Value '客户名称

brr(n, 4) = [L5].Value '客户联系电话

brr(n, 5) = arr(i, 1) '产品名称

brr(n, 6) = arr(i, 3) '规格

brr(n, 7) = arr(i, 4) '数量

brr(n, 8) = arr(i, 5) '单位

brr(n, 9) = arr(i, 6) '空白

brr(n, 10) = arr(i, 7) '单价

brr(n, 11) = arr(i, 8) '应付金额

brr(n, 12) = arr(i, 9) '优惠金额

brr(n, 13) = arr(i, 10) '单品备注

brr(n, 14) = [D7].Value '整单备注

Next i

'将数组brr的数据保存到销售记录表

If MsgBox("是否保存当前销售单?", vbYesNo) = vbNo Then Exit Sub

LastR = Sheets("销售记录").Cells(Rows.Count, 1).End(xlUp).Row + 1

Sheets("销售记录").Range("A" & LastR).Resize(UBound(brr), 14) = brr

MsgBox "销售单:" & [L3].Value & "保存成功!"

'销售单序号+1

[M1] = Format(Now(), "yyyymmdd"): [N1] = [N1] + 1

Call 清空数据

Call 销售单编号

[D5] = ""

[D5].Activate

End Sub

标签: #vba代码保存 #vba代码如何保存