哪位大侠能帮我解释一下这个excel vba代码?

Sub开单()Sheet1.[B7:H21].ClearContentsA=Right([G3],3)If[G3]=""Then[G3]="HD"&Format(Now(... Sub 开单()
Sheet1.[B7:H21].ClearContents
A = Right([G3], 3)
If [G3] = "" Then
[G3] = "HD" & Format(Now(), "YYYYMMDD") & Format(1, "000")
Else
[G3] = "HD" & Format(Now(), "YYYYMMDD") & Format(A + 1, "000")
End If
End Sub
Sub 保存()
ReDim BR(1 To 1, 1 To 6)
With Sheet1
A = .[B6].End(4).Row
If A > 21 Then MsgBox "不会吧!"
AR = .[B7].Resize(A - 6, 7)
BR(1, 1) = .[B3]
BR(1, 2) = .[B4]
BR(1, 3) = .[B5]
BR(1, 4) = .[G3]
BR(1, 5) = .[G4]
BR(1, 6) = .[G5]
End With
B = Sheet2.[A65536].End(3).Offset(1).Row
With Sheet2
.Cells(B, 1).Resize(A - 6, 7) = AR
.Cells(B, 8).Resize(A - 6, 6) = BR
End With
MsgBox "已保存"
End Sub
展开
 我来答
黄小涛101
2013-10-18 · TA获得超过207个赞
知道小有建树答主
回答量:523
采纳率:0%
帮助的人:335万
展开全部
Sub 开单()
Sheet1.[B7:H21].ClearContents   '清除B7:H21区域的内容
A = Right([G3], 3)  '将G3单元格的最右边三个字符赋给A
If [G3] = "" Then   '当G3为空时
    [G3] = "HD" & Format(Now(), "YYYYMMDD") & Format(1, "000")  '为G3赋值,HD20131018001(HD+今天的年月日+001)
Else    '否则
    [G3] = "HD" & Format(Now(), "YYYYMMDD") & Format(A + 1, "000")  'G3为HD+今天的年月日+(A+1),格式同上
End If
End Sub
Sub 保存()
ReDim BR(1 To 1, 1 To 6)    '重新定义一个1行6列的二维数组BR
With Sheet1     '以下数据均在sheet1中
    A = .[B6].End(4).Row    'A为B6向下的非空单元格所在行的行号
    If A > 21 Then MsgBox "不会吧!"    '当A>21时,提示"不会吧!"
    AR = .[B7].Resize(A - 6, 7)     '将包括B7在里向下A-6行,7列的值写入数组AR
    BR(1, 1) = .[B3]    '以下均是对BR这个二维数组赋值
    BR(1, 2) = .[B4]
    BR(1, 3) = .[B5]
    BR(1, 4) = .[G3]
    BR(1, 5) = .[G4]
    BR(1, 6) = .[G5]
End With
B = Sheet2.[A65536].End(3).Offset(1).Row    'B为A列最后一个空行
With Sheet2     '以下在sheet2中操作数据
    .Cells(B, 1).Resize(A - 6, 7) = AR  '将AR数组的值赋给包括B7在里向下A-6行,7列的区域
    .Cells(B, 8).Resize(A - 6, 6) = BR  '将BR数组的值赋给B8向右6列的区域
End With
MsgBox "已保存"         '提示“己保存”
End Sub
WDZZYC
2013-10-18 · TA获得超过751个赞
知道小有建树答主
回答量:849
采纳率:69%
帮助的人:405万
展开全部
Sub 开单()
Sheet1.[B7:H21].ClearContents‘ 清除B7:H21单元格内容但保留格式
A = Right([G3], 3)’ 返回最右边的3个字符
If [G3] = "" Then‘ 如果单元格G3为空
[G3] = "HD" & Format(Now(), "YYYYMMDD") & Format(1, "000")’‘那么单元格G3=HD连接年月日连接001
Else 否则
[G3] = "HD" & Format(Now(), "YYYYMMDD") & Format(A + 1, "000")单元格G3=HD连接年月日连接单元格G3最右边的3个字符+1
End If
End Sub
Sub 保存()
ReDim BR(1 To 1, 1 To 6)定义BR为二维数组
With Sheet1’对sheet1进行操作
A = .[B6].End(4).Row A=B6往下的最后一个非空单元格
If A > 21 Then MsgBox "不会吧!"
AR = .[B7].Resize(A - 6, 7) 将B7开始偏移A-6行,7列的数据写入AR
将B3\B4\B5\G3\G4\G5的数据写入BR数组中
BR(1, 1) = .[B3]
BR(1, 2) = .[B4]
BR(1, 3) = .[B5]
BR(1, 4) = .[G3]
BR(1, 5) = .[G4]
BR(1, 6) = .[G5]
End With
B = Sheet2.[A65536].End(3).Offset(1).Row‘B=Sheet2.A列最后一个非空单元格偏移1行
.Cells(B, 1).Resize(A - 6, 7) = AR 将AR数组放置到单元格Cells(B, 1).中
.Cells(B, 8).Resize(A - 6, 6) = BR 将BR数组放置到单元格Cells(B, 8).中
End With
MsgBox "已保存"弹出已保存对话框
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lwg111a
2013-10-18 · TA获得超过420个赞
知道小有建树答主
回答量:427
采纳率:50%
帮助的人:196万
展开全部
第一段Sub ……End Sub,作用是开单前,清除原来输入的数据,并且生成一个新的单号。
第二段Sub ……End Sub,作用是录入完数据后,执行保存命令,将输入的数据转入到Sheet2保存。
Sheet2用于保存所有单号对应的数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式