vba编程基础知识
vba编程基础知识有下面这些:
VBA是编辑语言,宏是用VBA代码保存下来的程序。
VBA代码都是以“Sub宏名”及一对空括号开头,以“EndSub”结尾。
模块是保存过程的地方,一个模块可以保存多个不同类型的过程。
对象,工作簿,工作表,单元格,图片,图表,透视表等。
每个对象都有属性,属性是对象包含的内容或特点。(对象.属性)
对象的某些属性也是对象,属性和对象是相对而言的。
每个对象都有方法,方法是指在对象上执行的某个动作。(对象.方法)
VBA的编辑环境——VBE(VisualBasicEditor)
进入VBE的方法:
。
右击工作表,选择ViewCode3.DEVELOPER下的VisualBasic。
立即窗口(view-IMMdediateWindow)中直接输入命令,回车后将显示命令执行后的结果。如果立即窗口未显示,快捷键Ctrl+G
因为VBA程序一般保存在模块里,所以先添加一个模块。
vba程序是什么?
用代码实现自动化,界面就是一个按钮,点一下就完成了工资表的计算,或者自动生成工资条等。
这就是操作界面。
PrivateSubCommandButton3_Click()检查填充
DimskUArr(1To1000,1To3)
DimskUGsAsInteger
DimhHAsInteger
DimzlHHAsInteger
Cells.Find(What:="Weightofbox",After:=ActiveCell,LookIn:=xlFormulas_
,LookAt:=xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,_
MatchCase:=False,MatchByte:=False,SearchFormat:=False).Activate
zlHH=ActiveCell.Row重量所在行号
skmGs=0
DoWhileTrim(Cells(hH,1).Text)<>""
skUGs=skUGs+1
skUArr(skUGs,1)=Trim(Cells(hH,1).Text)
skUArr(skUGs,2)=Trim(Cells(hH,4).Text)
skUArr(skUGs,3)=Cells(hH,10).Value
hH=hH+1
DimfNameAsString
DimSBookAsWorkbook
CallSelectFile(fName)
SetSBook=Workbooks.Open(fName)
DimM_skuAsString,M_fNSkuAsString,M_qtyAsInteger
WithSBook.Sheets(1)
ForI=1ToskUGs
M_sku=Trim(.Cells(5+I-1,1).Text)
M_fnSku=Trim(.Cells(5+I-1,4).Text)
M_qty=.Cells(5+I-1,9).Value
IfskUArr(I,1)<>M_skuThen
MsgBox("第"&I&"条记录的SKU不一致!")
ExitSub
EndIf
IfskUArr(I,2)<>M_fnSkuThen
MsgBox("第"&I&"条记录的FNSKU不一致!")
ExitSub
EndIf
IfskUArr(I,3)<>M_qtyThen
MsgBox("第"&I&"条记录的QTY不一致!")
ExitSub
EndIf
NextI
EndWith
DimqtyArr()AsInteger
DimboxGsAsInteger
DimboxArr()
WithThisWorkbook.Sheets(1)
boxGs=.Cells(4,200).End(xlToLeft).Column
ReDimqtyArr(1ToskUGs,1ToboxGs)
ReDimboxArr(1To4,1ToboxGs)
读取数量
ForI=1ToskUGs
ForJ=1ToboxGs
qtyArr(I,J)=.Cells(5+I-1,12+J-1).Value
NextJ
NextI
读取box
ForI=1To4
ForJ=1ToboxGs
boxArr(I,J)=.Cells(zlHH+I-1,12+J-1).Value
NextJ
NextI
EndWith
WithSBook.Sheets(1)
.Cells(5,12).Resize(skUGs,boxGs)=qtyArr
.Cells(zlHH,12).Resize(4,boxGs)=boxArr
ForI=1ToskUGs
ForJ=1ToboxGs
IfqtyArr(I,J)>0Then
.Cells(5+I-1,12+J-1)=qtyArr(I,J)
EndIf
NextJ
NextI
ForI=1To4
ForJ=1ToboxGs
.Cells(zlHH+I-1,12+J-1)=boxArr(I,J)
NextJ
NextI
EndWith
SBook.Save
MsgBox("检查结果OK,填充完成!")
EndSub
这是其中一个按钮的代码,供参考。
全是英文?看不懂?
本回答由网友推荐