编程vba(vba编程代码大全)

2023-11-12 09:16:52 数码极客 bianji01

 

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

这是其中一个按钮的代码,供参考。

全是英文?看不懂?

本回答由网友推荐

声明:易趣百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系315127732@qq.com
广告位招租
横幅广告