VBA常用代码
VBA常用代码大全
.、八、-刖言我们平时在工作表单元格的公式中常常使用函数,EGcel自带的常用的函数多达300多个, 功能强大,丰富多彩,但是在 VBA中不能直接应用,必须在函数名前面加上对象,比如:Applicatio n. WorksheetF un ctio n.Sum(arg1,arg2,arg3) 。
而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数, 以供大家学习参考。
第1.1例ASC函数一、题目:要求编写一段代码,运行后得到字符串”EGcel”的首字母和” e”的ASCII值。
二、代码:Sub 示例_1_01()DimmyNum1%,myNum2%myNum仁Asc("EGcel")'返回 69myNum2=Asc("e")' 返回 101[a1]="myNum 1=":[b1]=myNum1[a2]="myNum2=":[b2]=myNum2En dSub三、代码详解1、Sub示例_1_01():宏程序的开始语句。
2、DimmyNum1%,myNum2% :变量 myNum1 和 myNum2 声明为整型变量。
也可以写为DimmyNum1AsInteger 。
Integer变量存储为16位(2个字节)的数值形式,其范围为-32,768到32,767之间。
Integer的类型声明字符是百分比符号(%)。
3、myNum1=Asc("EGcel"):把 Asc 函数的值赋给变量 myNum1 。
Asc函数返回一个Integer,代表字符串中首字母的字符的 ASCII代码。
语法Asc(stri ng)必要的string (字符串)参数可以是任何有效的字符串表达式。
如果string中没有包含任何字符,则会产生运行时错误。
4、myNum2=Asc("e"):把Asc函数的值赋给变量myNum2。
vba 常用宏代码
在VBA中,你可以使用宏来自动执行一系列的操作。
以下是一些常用的VBA宏代码示例:1.打开一个工作簿:vba复制代码Sub OpenWorkbook()Workbooks.Open "C:\path\to\your\workbook.xlsx"End Sub2.关闭一个工作簿:vba复制代码Sub CloseWorkbook()ThisWorkbook.Close SaveChanges:=TrueEnd Sub3.复制一个单元格的内容:vba复制代码Sub CopyCell()Range("A1").Copy Range("B1")End Sub4.粘贴一个单元格的内容:vba复制代码Sub PasteCell()Range("B1").PasteSpecial Paste:=xlPasteValuesEnd Sub5.查找并替换单元格中的内容:vba复制代码Sub FindAndReplace()Range("A1").Replace What:="old", Replacement:="new"End Sub6.自动填充数据:vba复制代码Sub AutoFill()Range("A1:A10").FillDownEnd Sub7.插入新的列或行:vba复制代码Sub InsertColumn()Columns("B:B").Insert Shift:=xlToRight,CopyOrigin:=xlFormatFromLeftOrAboveEnd Sub8.删除列或行:vba复制代码Sub DeleteColumn()Columns("B:B").Delete Shift:=xlToLeft,CopyOrigin:=xlFormatFromLeftOrAboveEnd Sub。
vba编程代码大全
vba编程代码大全VBA编程代码大全。
VBA是Visual Basic for Applications的缩写,是一种用于Microsoft Office应用程序的编程语言。
通过VBA,用户可以编写自定义的宏和程序,以实现自动化操作和定制功能。
VBA编程在Excel、Word、PowerPoint等Office应用中都有广泛的应用,可以大大提高工作效率和数据处理的灵活性。
本文将为大家详细介绍VBA 编程中常用的代码,帮助大家更好地掌握VBA编程技能。
一、基本操作。
1. 打开VBA编辑器。
在Office应用程序中,按下Alt + F11快捷键即可打开VBA编辑器。
在VBA 编辑器中,可以编写和管理VBA代码。
2. 编写子程序。
使用Sub关键字定义一个子程序,然后在其中编写具体的VBA代码。
例如:Sub HelloWorld()。
MsgBox "Hello, World!"End Sub。
3. 运行宏。
在VBA编辑器中,可以直接运行编写好的宏程序。
也可以在Office应用程序中,通过快捷键或菜单来运行宏。
二、常用代码。
1. 操作单元格。
在Excel中,可以使用VBA来操作单元格,例如:Range("A1").Value = 100。
Range("A1").Interior.Color = RGB(255, 0, 0)。
2. 循环结构。
使用VBA可以编写各种类型的循环结构,例如For循环、Do While循环等,来实现对数据的遍历和处理。
3. 条件判断。
VBA中的If语句可以用来进行条件判断,根据不同的条件执行不同的操作,例如:If Range("A1").Value > 0 Then。
Range("B1").Value = "Positive"Else。
Range("B1").Value = "Negative"End If。
(word完整版)VBA代码汇总,推荐文档
1:打开所有隐藏工作表Sub打开所有隐藏工作表()Dim i As IntegerFor i=1To Sheets.CountSheets(i).Visible=TrueNext iEnd Sub2:循环宏Sub循环()AAA=Range("C2")Dim i As LongDim times As Longtimes=AAA'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i=1To timesCall过滤一行If Range("完成标志")="完成"ThenExit For'假如名为'完成标志'的命名单元的值等于'完成',则退出循环,假如一开始就等于'完成',则只执行一次循环就退出'If Sheets("传送参数").Range("A"&i).Text="完成"ThenExit For'假如某列出现"完成"内容则退出循环Next iEnd Sub3:录制宏时调用“停止录制”工具栏Sub录制宏时调用停止录制工具栏()mandBars("Stop Recording").Visible=TrueEnd Sub4:高级筛选5列不重复数据至指定表Sub高级筛选5列不重复数据至Sheet2()Sheets("Sheet2").Range("A1:E65536")=""'清除Sheet2的A:D列Range("A1:E65536").AdvancedFilter Action:=xlFilterCopy,CopyToRange:=Sheet2.Range(_"A1"),Unique:=TrueSheet2.Columns("A:E").Sort Key1:=Sheet2.Range("A2"),Order1:=xlAscending,Header:=xlGuess,_OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod_ :=xlPinYinEnd Sub5:双击单元执行宏(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)If Range("$A$1")="关闭"ThenExit SubSelect Case Target.AddressCase"$A$4"Call宏1Cancel=TrueCase"$B$4"Call宏2Cancel=TrueCase"$C$4"Call宏3Cancel=TrueCase"$E$4"Call宏4Cancel=TrueEnd SelectEnd Sub6:双击指定区域单元执行宏(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean) If Range("$A$1")="关闭"Then Exit SubIf Not Application.Intersect(Target,Range("A4:A9","C4:C9"))Is Nothing Then Call打开隐藏表End Sub7:进入单元执行宏(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)'以单元格进入代替按钮对象调用宏If Range("$A$1")="关闭"Then Exit SubSelect Case Target.AddressCase"$A$5"'单元地址(Target.Address),或命名单元名字()Call宏1Case"$B$5"Call宏2Case"$C$5"Call宏3End SelectEnd Sub8:进入指定区域单元执行宏(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Range("$A$1")="关闭"Then Exit SubIf Not Application.Intersect(Target,Range("A4:A9","C4:C9"))Is Nothing Then Call打开隐藏表End Sub9:在多个宏中依次循环执行一个(控件按钮代码)Private Sub CommandButton1_Click()Static RunMacro As IntegerSelect Case RunMacroCase0宏1RunMacro=1Case1宏2RunMacro=2Case2宏3RunMacro=0End SelectEnd Sub10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)Private Sub CommandButton1_Click()With CommandButton1If.Caption="保护工作表"ThenCall保护工作表.Caption="取消工作表保护"Exit SubEnd IfIf.Caption="取消工作表保护"ThenCall取消工作表保护.Caption="保护工作表"Exit SubEnd IfEnd WithEnd Sub11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)Option Explicit Private Sub CommandButton1_Click()With CommandButton1If.Caption="宏1"ThenCall宏1.Caption="宏2"Exit SubEnd IfIf.Caption="宏2"ThenCall宏2.Caption="宏3"Exit SubEnd IfIf.Caption="宏3"ThenCall宏3.Caption="宏1"Exit SubEnd IfEnd WithEnd Sub12:根据A1单元文本隐藏/显示按钮(控件按钮代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("A1")>2ThenCommandButton1.Visible=1ElseCommandButton1.Visible=0End IfEnd SubPrivate Sub CommandButton1_Click()重排窗口End Sub13:当前单元返回按钮名称(控件按钮代码)Private Sub CommandButton1_Click()ActiveCell=CommandButton1.CaptionEnd Sub14:当前单元内容返回到按钮名称(控件按钮代码)Private Sub CommandButton1_Click()CommandButton1.Caption=ActiveCellEnd Sub15:奇偶页分别打印Sub奇偶页分别打印()Dim i%,Ps%Ps=ExecuteExcel4Macro("GET.DOCUMENT(50)")'总页数MsgBox"现在打印奇数页,按确定开始."For i=1To Ps Step2ActiveSheet.PrintOut from:=i,To:=iNext iMsgBox"现在打印偶数页,按确定开始."For i=2To Ps Step2ActiveSheet.PrintOut from:=i,To:=iNext iEnd Sub16:自动打印多工作表第一页Sub自动打印多工作表第一页()Dim sh As IntegerDim xDim yDim syDim syzx=InputBox("请输入起始工作表名字:")sy=InputBox("请输入结束工作表名字:")y=Sheets(x).Indexsyz=Sheets(sy).IndexFor sh=y To syzSheets(sh).SelectSheets(sh).PrintOut from:=1,To:=1Next shEnd Sub17:查找A列文本循环插入分页符Sub循环插入分页符()'Selection=Workbooks("临时表").Sheets("表2").Range("A1")调用指定地址内容Dim i As LongDim times As Longtimes=Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"),"分页")'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i=1To timesCall插入分页符Next iEnd SubSub插入分页符()Cells.Find(What:="分页",After:=ActiveCell,LookIn:=xlValues,LookAt:=_xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=False)_.ActivateActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCellEnd SubSub取消原分页()Cells.SelectActiveSheet.ResetAllPageBreaksEnd Sub18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小Sub将A列最后数据行以上的所有B列图片大小调整为所在单元大小()Dim Pic As Picture,i&i=[A65536].End(xlUp).RowFor Each Pic In Sheet1.PicturesIf Not Application.Intersect(Pic.TopLeftCell,Range("B1:B"&i))Is Nothing Then Pic.Top=Pic.TopLeftCell.TopPic.Left=Pic.TopLeftCell.LeftPic.Height=Pic.TopLeftCell.HeightPic.Width=Pic.TopLeftCell.WidthEnd IfNextEnd Sub19:返回光标所在行数Sub返回光标所在行数()x=ActiveCell.RowRange("A1")=xEnd Sub20:在A1返回当前选中单元格数量Sub在A1返回当前选中单元格数量()[A1]=Selection.CountEnd Sub21:返回当前工作簿中工作表数量Sub返回当前工作簿中工作表数量()t=Application.Sheets.CountMsgBox tEnd Sub93:B列录入数据时在A列返回记录时间(工作表代码)Public Sub Worksheet_Change(ByVal Target As Range)If Target.Column=2ThenTarget.Offset(,-1)=NowEnd IfEnd Sub94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)Public Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target,[A1:A1000])Is Nothing Then If Target.Column=1ThenTarget.Offset(,1)=DateTarget.Offset(,2)=TimeEnd IfEnd IfEnd SubPublic Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target,[A1:A1000])Is Nothing Then If Target.Column=1ThenTarget.Offset(,1)=Format(Now(),"yyyy-mm-dd")Target.Offset(,2)=Format(Now(),"h:mm:ss")End IfEnd IfEnd Sub95:指定单元显示光标位置内容(工作表代码)Private Sub Worksheet_SelectionChange(ByVal T As Range) Sheets(1).Range("A1")=SelectionEnd Sub96:每编辑一个单元保存文件Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.SaveEnd Sub97:指定允许编辑区域Sub指定允许编辑区域()ActiveSheet.ScrollArea="B8:G15"End Sub98:解除允许编辑区域限制Sub解除允许编辑区域限制()ActiveSheet.ScrollArea=""End Sub99:删除指定行Sub删除指定行()Workbooks("临时表").Sheets("表2").Range("5:5").Delete End Sub100:删除A列为指定内容的行Sub删除A列为指定内容的行()Dim a,b As Integera=Sheet1.[a65536].End(xlUp).RowFor b=a To2Step-1If Cells(b,1).Value="删除"ThenRows(b).DeleteEnd IfNextEnd SubExcel VBA常用代码总结1改变背景色Range("A1").Interior.ColorIndex = xlNone ColorIndex一览•改变文字颜色Range("A1").Font.ColorIndex = 1•获取单元格Cells(1, 2)Range("H7")•获取范围Range(Cells(2, 3), Cells(4, 5))Range("a1:c3")'用快捷记号引用单元格Worksheets("Sheet1").[A1:B5]•选中某sheetSet NewSheet = Sheets("sheet1")NewSheet.Select•选中或激活某单元格'“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格。
vba编程代码大全
vba编程代码大全VBA编程代码大全。
VBA(Visual Basic for Applications)是一种用于应用程序开发的编程语言,它可以帮助用户在Microsoft Office软件中自动化任务,提高工作效率。
在本文中,我们将为您介绍一些常用的VBA编程代码,帮助您更好地利用VBA来处理各种任务。
首先,让我们来看一些常用的VBA基础操作代码。
在VBA中,您可以使用MsgBox函数来显示消息框,例如:```vba。
MsgBox "Hello, World!"```。
这段代码将会在屏幕上显示一个包含"Hello, World!"的消息框。
除了MsgBox 函数,VBA还提供了InputBox函数来获取用户输入的数值或文本:```vba。
Dim userInput As String。
userInput = InputBox("Please enter your name:")。
```。
这段代码将会弹出一个输入框,等待用户输入姓名,并将用户输入的内容存储在userInput变量中。
接下来,让我们来看一些与Excel相关的VBA代码。
在Excel中,VBA可以帮助您自动化各种数据处理任务。
例如,您可以使用VBA来创建新的工作表,并向其中填充数据:```vba。
Dim ws As Worksheet。
Set ws = ThisWorkbook.Sheets.Add。
= "NewSheet"ws.Range("A1").Value = "Hello"```。
这段代码将会在当前工作簿中创建一个名为"NewSheet"的新工作表,并在A1单元格中填入"Hello"。
除了操作工作表,VBA还可以帮助您处理Excel中的图表。
例如,您可以使用VBA来创建新的图表,并向其中添加数据:```vba。
VBA编程中的常用代码
VBA编程中的常用代码Excel与VBA编程中的常用代码用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!使用Dim语句Dim a as integer ' 声明A为整形变量Dim a '声明A为变体变量Dim a as string ' 声明A为字符串变量Dim a,b,c as currency ' 声明A,b,c 为货币变量声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal (当前不支持)、Date、String (只限变长字符串)、String * length (定长字符串)、Object、Variant、用户定义类型或对象类型。
强制声明变量Op tion Ex plicit,说明:该语句必在任何过程之前出现在模块中。
声明常数,用来代替文字值。
Const'常数的默认状态是PrivateConst My = 456声明P ublic 常数。
Public Const MyString = "HEL P"声明P rivate Integer 常数。
Private Const MyInt As Integer = 5在同一行里声明多个常数。
Const MyStr = "Hello", MyDouble As Double = 3.4567在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。
只要将该段代码加入到你的模块中。
Sub My_SelectSelection.CurrentRegion.SelectEnd sub删除当前单元格中数据的前后空格。
sub my_trimTrim(ActiveCell.Value) end sub使单元格位移精选文库sub my_offsetActiveCell.Offset(0, 1).Select' ActiveCell.Offset(0, -1).Select' ctiveCell.Offset(1 , 0).Select' ctiveCell.Offset(-1 , 0).Select'当前单元格向下移动一格当前单元格向上移动一格end sub如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往sub my_offset之下加一段代码 on error resume next注意以下代码都不再添加sub “代码名称”和end sub 请自己添加!给当前单元格赋值:ActiveCell.Value =" 你好!!!"给特定单元格加入一段代码:例如:在Al 单元格中插入 "HELLO "Range("a1").value="hello"又如:你现在的工作簿在sheet1上,你要往sheet2的Al 单元格中插入"HELLO " 1.sheets("sheet2").select range("a1").value="hello"或2.Sheets("sheet1").Range("a1").Value = "hello"说明:1. sheet2被打开,然后在将“ HELLO"放入到A1单元格中。
Excel VBA 常用代码50例
Excel VBA 常用代码50例001。
用命令按扭打印一个sheet1中B2:M30区域中的内容?我想在Sheet2中制件一个命令按扭, 打印表Sheet1中的[B2:M30] 区域中的内容?解答:可以将打印区域设为b2:m30,然后打印,如:sheets("sheet1").printarea="b2:m30"sheets("sheet1").printout随手写的,你可以试试看。
最简单的方法是:你先录制宏,在录制宏过程中,跑到页面设置里面,把打印范围设置到你想要的范围。
然后退出,停止录制宏,你就可以得到一些代码!002。
能否对一列中的文字统一去掉最后一个字?这些文字不统一,有些字数多,有些字数少。
如何处理?我用{"&-}不行解答:=REPLACE(A1,LEN(A1),1," ")(在过渡列进行)003.能否根据单元格数值自动标记序号?各位大佬,一工作表有两列,“序号”及“金额”,能否将金额不等于0的行自动标上序号呢?如无现成的函数,应怎样设置?解答:Dim xuhao As Integerxuhao = 1Range("b2").SelectDo While Selection <> ""If Selection <> 0 ThenActiveCell.Previous.Value = xuhaoxuhao = xuhao + 1End IfActiveCell.Offset(1, 0).Range("a1").SelectLoop004.求教自定义函数查询了一些自定义函数的例子都是单变量的。
自定义函数能否建立“(As Range) As Interger”的函数,应该可以的,请各位大师赐教!请以“∑x2”为例,万分感谢!(该用"For Each ...Next",就是还不知道如何引用Range中的每个值,请高手指点。
vba常用代码大全
前言我们平时在工作表xx的公式xx常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBAxx不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。
而能在VBAxx直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。
第1.1例ASC函数一、题目:要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。
二、代码:Sub 示例_1_01()Dim myNum1%, myNum2%myNum1 = Asc("Excel") '返回69myNum2 = Asc("e") '返回101[a1] = "myNum1= ": [b1] = myNum1[a2] = "myNum2= ": [b2] = myNum2End Sub三、代码详解1、Sub 示例_1_01():宏程序的开始语句。
2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。
也可以写为Dim myNum1 As Integer 。
Integer 变量存储为16位(2 个字节)的数值形式,其范围为-32,768 到32,767 之间。
Integer 的类型声明字符是百分比符号(%)。
3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。
Asc函数返回一个Integer,代表字符串中首字母的字符的ASCII代码。
语法Asc(string)必要的string(字符串)参数可以是任何有效的字符串表达式。
如果string 中没有包含任何字符,则会产生运行时错误。
4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。
常用代码的VBA代码
Contents1. 提高运算速度的方法 (2)2. 养成好的代码书写习惯 (2)3. 通过一个文件操作其它文件 (3)4. 定位EXCEL某处 (3)5. 过滤 (4)6. 日期 (4)7. 制作图表: (5)8. 设定VBA printer (5)9. 字典 (6)10. 快速写入指定列 (7)11. 删除空白单元格所在的行 (7)12. Split分隔函数,很实用 (8)13. 计数 (8)14. On Error用法 (8)15. 去excel受保护内容密码, (9)16. VBA END 用法 (9)17. VBA RANGE 用法 (10)1. 提高运算速度的方法1)如果不需要和程序互动,就关闭屏幕更新:Application.ScreenUpdating = False(语句结束时,使用Application.ScreenUpdating= True 恢复正常)2)使用With语句来简化程序2. 养成好的代码书写习惯1) 代码注释:对重要代码进行注释,以确保三个月后你还能知道这句代码的作用2) 代码缩进:语句结构明了,层次更清晰,便于理解与修改,特别是If语句,For…Next等语句中。
比较一下下面两组代码,虽然都可以执行,但明显第二组层次更清晰。
3) 长代码显示多行(换行的位置输入一个空格和下划线“_”,然后按[Enter]回车键进行分行。
3. 通过一个文件操作其它文件在实际工作中,我们需要抓取很多文件上面的数据,但我们又不可能每次都全部打开,这个时候通过VBA可以控制其它文件的打开与关闭。
1)普通方式打开:Set sht = Workbooks.Open("C:\Users\sz331110\Desktop\Disk working file.xlsx")2)只读方式,不更新外部引用:Set sht = Workbooks.Open("C:\Users\sz331110\Desktop\Disk working file.xlsx",0,True)3)关闭:sht.Close SaveChanges:=False4. 定位EXCEL某处1) 单列最大非空行RowNum=Sheets(“xxx”).Range(“A65536”).End(Xlup).rowRowNum=Sheets(“xxx”).Columns(1).Find(DANo, LookAT:=End(Xlup).rowRowStart = Sheets("xxx").Columns(1).Find(DANo, LOOKAT:=xlWhole).row + 12) 最大非空列ColumnNum= Sheets("xxx").Cells(1,colums.count).End(xlToLeft).column3) 如何删除带错误公式的行:Range(“A:A”).specialCells(xlcelltypeformulas,xlerror).entireRow.delete5. 过滤1) 多重条件2) 取消筛选:ActiveSheet.AutoFilterMode = False3) 高级筛选获得不重复记录:sh.Sheets("Original").Range("a:aj").AdvancedFilterAction:=xlFilterCopy, unique:=True, CopytoRange:=sh.Sheets("Close(M)").Range("a1")4) 不包括某项:Instr(range(),”Ad“)=05) 选择区域:cells(x,x).resize(4,5)6. 日期1)当月最后一天:Dateserial(Year, month+1,0)上个月的第一天和最后一天:firstdayM = DateSerial(Year(Date), Month(Date) - 1, 1)lastdayM = DateSerial(Year(Date), Month(Date), 0)2)当天周数:WeekNum = VBA.DatePart("ww", Date, vbMonday, vbFirstFourDays)上周的第一天和第二天firstdayW = Date - Weekday(Date) - 6lastdayW = Date - Weekday(Date)3)日期格式:cdate函数将有效的日期和时间表达式转换为类型日期,一般用format(cdate(dt),”yyyy-mm-dd hh:mm:ss”)7. 制作图表:用VBA制作图表,最重要一点就是实现图表数据自动更新。
Excel VBA常用代码及解释
Excel VBA常用代码及解释(1) Option Explicit解释:强制对模块内所有变量进行声明(2) Option Base 1解释:指定数组的第一个下标为1(3) On Error Resume Next解释:忽略错误继续执行VBA代码,避免出现错误消息(4) On Error GoTo 100解释:当错误发生时跳转到过程中的某个位置(5) On Error GoTo 0解释:恢复正常的错误提示(6) Application.DisplayAlerts=False解释:在程序执行过程中使出现的警告框不显示(7) Application.DisplayAlerts=True解释:在程序执行过程中恢复显示警告框(8) Application.ScreenUpdating=False解释:关闭屏幕刷新(9) Application.ScreenUpdating = True解释:打开屏幕刷新(10) Workbooks.Add()解释:创建一个新的工作簿(11) Workbooks(“book1.xls”).Activate解释:激活名为book1的工作簿(12) ThisWorkbook.Save解释:保存工作簿(13) ThisWorkbook.close解释:关闭当前工作簿(14) ActiveWorkbook.Sheets.Count解释:获取活动工作薄中工作表数(15) Active 解释:返回活动工作薄的名称(16) This 解释:返回当前工作簿名称(17) ThisWorkbook.FullName解释:返回当前工作簿路径和名(18) edRange.Rows.Count解释:当前工作表中已使用的行数(19) Rows.Count解释:获取工作表的行数(20) Sheets(Sheet1).Name= “Sum”解释:将Sheet1命名为Sum(21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) 解释:添加一个新工作表在第一工作表前(22)ActiveSheet.MoveAfter:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count )解释:将当前工作表移至工作表的最后(23) Worksheets(Array(“sheet1”,”sheet2”)).Select解释:同时选择工作表1和工作表2(24) Sheets(“sheet1”).Delete或 Sheets(1).Delete解释:删除工作表1(25) edRange.FormatConditions.Delete解释:删除当前工作表中所有的条件格式(26) Cells.Hyperlinks.Delete解释:取消当前工作表所有超链接(27) ActiveCell.CurrentRegion.Select选择当前活动单元格所包含的范围,等同于快捷键Ctrl+A(28) Cells.Select解释:选定当前工作表的所有单元格(29) Range(“A1”).ClearContents解释:清除活动工作表上单元格A1中的内容。
vba常用代码大全
前言我们平时在工作表单元格的公式中常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。
而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。
第1.1例 ASC函数一、题目:要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。
二、代码:Sub 示例_1_01()Dim myNum1%, myNum2%myNum1 = Asc("Excel") '返回69myNum2 = Asc("e") '返回101[a1] = "myNum1= ": [b1] = myNum1[a2] = "myNum2= ": [b2] = myNum2End Sub三、代码详解1、Sub 示例_1_01():宏程序的开始语句。
2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。
也可以写为 Dim myNum1 As Integer 。
Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。
Integer 的类型声明字符是百分比符号 (%)。
3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。
Asc函数返回一个 Integer,代表字符串中首字母的字符的ASCII代码。
语法Asc(string)必要的 string(字符串)参数可以是任何有效的字符串表达式。
如果 string 中没有包含任何字符,则会产生运行时错误。
4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。
(word完整版)VBA代码汇总,推荐文档
1:打开所有隐藏工作表Sub打开所有隐藏工作表()Dim i As IntegerFor i=1To Sheets.CountSheets(i).Visible=TrueNext iEnd Sub2:循环宏Sub循环()AAA=Range("C2")Dim i As LongDim times As Longtimes=AAA'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i=1To timesCall过滤一行If Range("完成标志")="完成"ThenExit For'假如名为'完成标志'的命名单元的值等于'完成',则退出循环,假如一开始就等于'完成',则只执行一次循环就退出'If Sheets("传送参数").Range("A"&i).Text="完成"ThenExit For'假如某列出现"完成"内容则退出循环Next iEnd Sub3:录制宏时调用“停止录制”工具栏Sub录制宏时调用停止录制工具栏()mandBars("Stop Recording").Visible=TrueEnd Sub4:高级筛选5列不重复数据至指定表Sub高级筛选5列不重复数据至Sheet2()Sheets("Sheet2").Range("A1:E65536")=""'清除Sheet2的A:D列Range("A1:E65536").AdvancedFilter Action:=xlFilterCopy,CopyToRange:=Sheet2.Range(_"A1"),Unique:=TrueSheet2.Columns("A:E").Sort Key1:=Sheet2.Range("A2"),Order1:=xlAscending,Header:=xlGuess,_OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,SortMethod_ :=xlPinYinEnd Sub5:双击单元执行宏(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)If Range("$A$1")="关闭"ThenExit SubSelect Case Target.AddressCase"$A$4"Call宏1Cancel=TrueCase"$B$4"Call宏2Cancel=TrueCase"$C$4"Call宏3Cancel=TrueCase"$E$4"Call宏4Cancel=TrueEnd SelectEnd Sub6:双击指定区域单元执行宏(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean) If Range("$A$1")="关闭"Then Exit SubIf Not Application.Intersect(Target,Range("A4:A9","C4:C9"))Is Nothing Then Call打开隐藏表End Sub7:进入单元执行宏(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)'以单元格进入代替按钮对象调用宏If Range("$A$1")="关闭"Then Exit SubSelect Case Target.AddressCase"$A$5"'单元地址(Target.Address),或命名单元名字()Call宏1Case"$B$5"Call宏2Case"$C$5"Call宏3End SelectEnd Sub8:进入指定区域单元执行宏(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Range("$A$1")="关闭"Then Exit SubIf Not Application.Intersect(Target,Range("A4:A9","C4:C9"))Is Nothing Then Call打开隐藏表End Sub9:在多个宏中依次循环执行一个(控件按钮代码)Private Sub CommandButton1_Click()Static RunMacro As IntegerSelect Case RunMacroCase0宏1RunMacro=1Case1宏2RunMacro=2Case2宏3RunMacro=0End SelectEnd Sub10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)Private Sub CommandButton1_Click()With CommandButton1If.Caption="保护工作表"ThenCall保护工作表.Caption="取消工作表保护"Exit SubEnd IfIf.Caption="取消工作表保护"ThenCall取消工作表保护.Caption="保护工作表"Exit SubEnd IfEnd WithEnd Sub11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)Option Explicit Private Sub CommandButton1_Click()With CommandButton1If.Caption="宏1"ThenCall宏1.Caption="宏2"Exit SubEnd IfIf.Caption="宏2"ThenCall宏2.Caption="宏3"Exit SubEnd IfIf.Caption="宏3"ThenCall宏3.Caption="宏1"Exit SubEnd IfEnd WithEnd Sub12:根据A1单元文本隐藏/显示按钮(控件按钮代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("A1")>2ThenCommandButton1.Visible=1ElseCommandButton1.Visible=0End IfEnd SubPrivate Sub CommandButton1_Click()重排窗口End Sub13:当前单元返回按钮名称(控件按钮代码)Private Sub CommandButton1_Click()ActiveCell=CommandButton1.CaptionEnd Sub14:当前单元内容返回到按钮名称(控件按钮代码)Private Sub CommandButton1_Click()CommandButton1.Caption=ActiveCellEnd Sub15:奇偶页分别打印Sub奇偶页分别打印()Dim i%,Ps%Ps=ExecuteExcel4Macro("GET.DOCUMENT(50)")'总页数MsgBox"现在打印奇数页,按确定开始."For i=1To Ps Step2ActiveSheet.PrintOut from:=i,To:=iNext iMsgBox"现在打印偶数页,按确定开始."For i=2To Ps Step2ActiveSheet.PrintOut from:=i,To:=iNext iEnd Sub16:自动打印多工作表第一页Sub自动打印多工作表第一页()Dim sh As IntegerDim xDim yDim syDim syzx=InputBox("请输入起始工作表名字:")sy=InputBox("请输入结束工作表名字:")y=Sheets(x).Indexsyz=Sheets(sy).IndexFor sh=y To syzSheets(sh).SelectSheets(sh).PrintOut from:=1,To:=1Next shEnd Sub17:查找A列文本循环插入分页符Sub循环插入分页符()'Selection=Workbooks("临时表").Sheets("表2").Range("A1")调用指定地址内容Dim i As LongDim times As Longtimes=Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"),"分页")'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i=1To timesCall插入分页符Next iEnd SubSub插入分页符()Cells.Find(What:="分页",After:=ActiveCell,LookIn:=xlValues,LookAt:=_xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=False)_.ActivateActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCellEnd SubSub取消原分页()Cells.SelectActiveSheet.ResetAllPageBreaksEnd Sub18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小Sub将A列最后数据行以上的所有B列图片大小调整为所在单元大小()Dim Pic As Picture,i&i=[A65536].End(xlUp).RowFor Each Pic In Sheet1.PicturesIf Not Application.Intersect(Pic.TopLeftCell,Range("B1:B"&i))Is Nothing Then Pic.Top=Pic.TopLeftCell.TopPic.Left=Pic.TopLeftCell.LeftPic.Height=Pic.TopLeftCell.HeightPic.Width=Pic.TopLeftCell.WidthEnd IfNextEnd Sub19:返回光标所在行数Sub返回光标所在行数()x=ActiveCell.RowRange("A1")=xEnd Sub20:在A1返回当前选中单元格数量Sub在A1返回当前选中单元格数量()[A1]=Selection.CountEnd Sub21:返回当前工作簿中工作表数量Sub返回当前工作簿中工作表数量()t=Application.Sheets.CountMsgBox tEnd Sub93:B列录入数据时在A列返回记录时间(工作表代码)Public Sub Worksheet_Change(ByVal Target As Range)If Target.Column=2ThenTarget.Offset(,-1)=NowEnd IfEnd Sub94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)Public Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target,[A1:A1000])Is Nothing Then If Target.Column=1ThenTarget.Offset(,1)=DateTarget.Offset(,2)=TimeEnd IfEnd IfEnd SubPublic Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target,[A1:A1000])Is Nothing Then If Target.Column=1ThenTarget.Offset(,1)=Format(Now(),"yyyy-mm-dd")Target.Offset(,2)=Format(Now(),"h:mm:ss")End IfEnd IfEnd Sub95:指定单元显示光标位置内容(工作表代码)Private Sub Worksheet_SelectionChange(ByVal T As Range) Sheets(1).Range("A1")=SelectionEnd Sub96:每编辑一个单元保存文件Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.SaveEnd Sub97:指定允许编辑区域Sub指定允许编辑区域()ActiveSheet.ScrollArea="B8:G15"End Sub98:解除允许编辑区域限制Sub解除允许编辑区域限制()ActiveSheet.ScrollArea=""End Sub99:删除指定行Sub删除指定行()Workbooks("临时表").Sheets("表2").Range("5:5").Delete End Sub100:删除A列为指定内容的行Sub删除A列为指定内容的行()Dim a,b As Integera=Sheet1.[a65536].End(xlUp).RowFor b=a To2Step-1If Cells(b,1).Value="删除"ThenRows(b).DeleteEnd IfNextEnd SubExcel VBA常用代码总结1改变背景色Range("A1").Interior.ColorIndex = xlNone ColorIndex一览•改变文字颜色Range("A1").Font.ColorIndex = 1•获取单元格Cells(1, 2)Range("H7")•获取范围Range(Cells(2, 3), Cells(4, 5))Range("a1:c3")'用快捷记号引用单元格Worksheets("Sheet1").[A1:B5]•选中某sheetSet NewSheet = Sheets("sheet1")NewSheet.Select•选中或激活某单元格'“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格。
VBA精华代码50例
1 建立窗口的复本1.Sub 建立窗口的副本()2. MsgBox “以使用中窗口为来源建立一个新的窗口副本”3. ActiveWindow.NewWindow4.End Sub2选取窗口1.Sub 选取窗口()2. MsgBox “依序切换已开启的窗口”3. wsuu = Windows.Count4. For i = 1 To wsuu5. Windows(i).Activate6. henji = MsgBox(“第 ” & i & “个窗口,还要继续吗?”, vbYesNo)7. If henji = vbNo Then Exit Sub8. Next i9.End Sub3 关闭窗口1.Sub 关闭窗口()2. MsgBox “关闭使用中的窗口”3. ActiveWindow.Close4.End Sub4 显示窗口的标题1.Sub 显示窗口的标题()2. MsgBox “显示使用中窗口的标题”3. MsgBox ActiveWindow.Caption4.End Sub5取得窗口的数量1.Sub 取得窗口的数量()2. MsgBox “显示目前已开启的窗口数量”3. MsgBox Windows.Count4.End Sub6 分割窗口与解除分割窗口1.Sub 分割窗口()2. MsgBox “以使用中储存格为基准点来分割窗口”3. gyou = ActiveCell.Row4. retu = ActiveCell.Column5. With ActiveWindow6. .SplitColumn = retu7. .SplitRow = gyou8. End With9. MsgBox “回复原来的状态”10. ActiveWindow.Split = False11.End Sub7 冻结窗格1.Sub 冻解窗格()2. MsgBox “以使用中的储存格为基准将窗格冻结”3. ActiveWindow.FreezePanes = True4.End Sub5.Sub 取消冻结窗格()6. MsgBox “取消冻结的窗格”7. ActiveWindow.FreezePanes = False8.End Sub8 移动窗口的位置1.Sub 设定窗口的位置()2. MsgBox “将使用中窗口向下移动60点、向右移动90点”3. jyoutan = ActiveWindow.Top4. satan = ActiveWindow.Left5. ActiveWindow.Top = jyoutan + 606. ActiveWindow.Left = satan + 907. MsgBox “回复原来的状态”8. ActiveWindow.Top = jyoutan9. ActiveWindow.Left = satan10.End Sub9 变更窗口的高度及宽度1.Sub 变更窗口的高度及宽度()2. MsgBox “将使用中窗口的高度及宽度各缩减一半”3. takasa = ActiveWindow.Height4. haba = ActiveWindow.Width5. ActiveWindow.Height = takasa / 26. ActiveWindow.Width = haba / 27. MsgBox “回复原来的状态”8. ActiveWindow.Height = takasa9. ActiveWindow.Width = haba10.End Sub10 锁定窗口的尺寸1.Sub 窗口尺寸的变更()2. MsgBox “锁定/解除窗口尺寸变更的功能”3. ActiveWindow.EnableResize = Not (ActiveWindow.EnableResize)4.End Sub11 变更窗口网格线的颜色1.Sub 设定窗口的网格线颜色()2. MsgBox “将窗口的网格线颜色变更为红色”3. iro = ActiveWindow.GridlineColor4. ActiveWindow.GridlineColor = RGB(255,0,0)5. MsgBox “回复原来的状态”6. ActiveWindow.GridlineColor = iro7.End Sub12 重排窗口1.Sub 重排窗口()2. MsgBox "将目前所有开启的窗口以阶梯式并排的方式来排列"3. Windows.Arrange arrangestyle:=xlArrangeStyleCascade4.End Sub5.Sub 重排窗口()6. MsgBox "将目前所有开启的窗口以砖块式并排的方式来排列"7. MsgBox "目前开启的窗口数量:" & Windows.Count8. Application.Windows.Arrange arrangestyle:=xlArrangeStyleTiled9.End Sub13 窗口的最大化及最小化1.Sub 设定窗口的状态()2. MsgBox “将使用中窗口变为最小化”3. Windows(1).WindowState = xlMinimized4. MsgBox “将使用中窗口变为最大化”5. Windows(1).WindowState = xlMaximized6.End Sub14 隐藏最大化及最小化的按钮1.Sub 隐藏最大化及最小化的按钮()2. MsgBox “隐藏窗口中最大化及最小化的按钮”3. ActiveWindow.EnableResize = Not (ActiveWindow.EnableResize)4. MsgBox “回复原来的状态”5. ActiveWindow.EnableResize = True6.End Sub15 将最上层的窗口移到最下层1.Sub 将窗口移到最下层()2. MsgBox “将使用中的窗口移到最下层”3. ActiveWindow.ActivateNext4.End Sub16 将最下层的窗口移到最上层1.Sub 将窗口移到最上层()2. MsgBox “将最下层的窗口移到最上层”3. ActiveWindow.ActivatePrevious4.End Sub17 显示储存格内的表达式1.Sub 显示表达式()2. MsgBox “在使用中窗口内,让有表达式的储存格显示表达式”3. ActiveWindow.DisplayFormulas = True4. MsgBox “回复原来的状态”5. ActiveWindow.DisplayFormulas = False6.End Sub18 显示或隐藏零值1.Sub 显示或隐藏零值()2. MsgBox “显示/隐藏使用中窗口内的零值”3. ActiveWindow.DisplayZeros = Not (ActiveWindow.DisplayZeros)4.End Sub19 显示及隐藏网格线1.Sub 显示或隐藏网格线()2. MsgBox “显示/隐藏使用中窗口的网格线”3. ActiveWindow.DisplayGridlines = Not (ActiveWindow.DisplayGridlines)4.End Sub20 以列或行为单位卷动窗口内容1.Sub 列的卷动()2. MsgBox “将窗口画面向下卷动五列”3. gyou = 54. ActiveWindow.SmallScroll Down:=gyou5.End Sub6.Sub 行的卷动()7. MsgBox “将窗口画面向右卷动两行”8. retu = 29. ActiveWindow.SmallScroll ToRight:=retu10.End Sub21 以页为单位卷动窗口内容1.Sub 页的卷动()2. MsgBox “将窗口画面向下卷动一页”3. pge = 14. rgeScroll Down:=pge5.End Sub22 显示、隐藏水平滚动条及垂直滚动条1.Sub 隐藏窗口的滚动条()2. MsgBox “隐藏/显示使用中窗口的滚动条”3. ActiveWindow.DisplayHorizontalScrollBar = Not(ActiveWindow.DisplayHorizontalScrollBar)4. ActiveWindow.DisplayVerticalScrollBar = Not (ActiveWindow.DisplayVerticalScrollBar)5.End Sub6.7.Sub 隐藏活页簿的滚动条()8. MsgBox “隐藏/显示活页簿的水平及垂直滚动条”9. Application.DisplayScrollBars = Not (Application.DisplayScrollBars)10.End Sub23 以指定的储存格卷动到窗口左上角1.Sub 以窗口左上角为基准的窗口画面卷动()2. MsgBox “将储存格C6卷动到窗口的左上角”3. ActiveWindow.ScrollRow = 64. ActiveWindow.ScrollColumn = 35.End Sub24以部分字段元为键来删除重复要判断这样的不重复,就是将数据范围设定为包含不重复的字段,以进阶筛选执行不选重复的纪录。
VBA常用代码
Sub setbar() '输出所有的工具栏,菜单栏Dim cmdbar As CommandBarDim i As Integeri = 1For Each cmdbar In mandBarsCells(i, 1) = Cells(i, 2) = cmdbar.Indexi = i + 1NextEnd SubSub setbar()mandBars("Standard").Visible _= Not mandBars("Standard").VisibleEnd SubSub setbar()mandBars(3).V isible _= Not mandBars("Standard").VisibleEnd SubSub setbar()mandBars("Worksheet Menu Bar").ResetWith mandBars("Worksheet Menu Bar")With .Controls.Add(msoControlButton).Caption = "测试按钮".TooltipText = "这是自己添加的一个测试按钮".Style = msoButtonIconAndCaptionBelow.FaceId = 5End WithEnd WithEnd Sub_______________________________________________________________________________ Function CPK(rs As Range, ucl As Double, lcl As Double) '计算CPKDim sigma As Double '西格玛Dim T As Double '规格公差Dim U As Double '规格中心值Dim x As Double '样本均值Dim Ca As Doublesigma = Application.WorksheetFunction.StDev(rs) '计算西格玛T = ucl - lclU = (ucl + lcl) / 2x = Application.WorksheetFunction.A verage(rs)If lcl = -1 Then '当单侧下限规程没有时CPK = (T - x) / (sigma * 3)End IfIf ucl = -1 Then '当单侧上限规程没有时CPK = (x - lcl) / (sigma * 3)End IfIf ucl <> -1 And lcl <> -1 Then '正常计算Ca = (x - U) / (T / 2)cp = T / (6 * sigma)CPK = cp * (1 - Abs(Ca))End IfIf CPK < 0 Then '如果CPK小于0,则为0CPK = 0End IfEnd Function'计算合格率Function Pass(re As Range, ucl As Double, lcl As Double)Dim passcount As Integer '合格个数Dim passcent As Double '合格率Dim allcount As Integer '总数passcount = 0passcent = 0allcount = re.countFor i = 1 To re.Rows.countFor j = 1 To re.Columns.countIf re.Cells(i, j) = "" Or CDbl(re.Cells(i, j).V alue) = False Then '如果不能转换成double型,或者为空,总数减一allcount = allcount - 1ElseIf CDbl(re.Cells(i, j).V alue) >= lcl And CDbl(re.Cells(i, j).V alue) <= ucl Then '如果合格则合格数加1passcount = passcount + 1End IfNext jNext iIf allcount <= 0 ThenMsgBox "总数为0了"Elsepasscent = passcount / allcountEnd IfPass = passcentEnd Function。
excel常用vba代码 和语法
excel常用vba代码和语法Excel VBA(Visual Basic for Applications)是一种为Excel编程的语言,可以使用VBA代码来自动化执行各种操作。
以下是一些常用的VBA代码和语法示例:1. 定义和使用变量:```vbaDim num As Integernum = 10```2. 循环结构:- For循环:```vbaFor i = 1 To 10' 循环体Next i```- While循环:```vbaWhile i < 10' 循环体i = i + 1Wend```3. 条件判断:- If语句:```vbaIf condition Then' 条件满足时执行的代码ElseIf condition Then' 第二个条件满足时执行的代码Else' 条件不满足时执行的代码End If```- Select Case语句:```vbaSelect Case gradeCase "A"' A级别操作Case "B", "C"' B或C级别操作Case Else' 其他情况的操作End Select```4. 定义和调用子过程(函数):```vbaSub MySubroutine()' 子过程的代码End SubFunction MyFunction()' 函数的代码MyFunction = resultValue ' 返回结果End Function```5. 控制Excel对象:- 打开和关闭工作簿:```vbaWorkbooks.Open ("C:\example.xlsx") ActiveWorkbook.Close```- 读取和写入单元格:```vbaRange("A1").Value = "Hello"value = Range("A1").Value```- 获取和设置工作表属性:```vbaSheets("Sheet1").Activate Worksheets.Add```这些示例演示了一些常用的VBA代码和语法。
(word完整版)Excel VBA常用技巧代码
1.删除重复行 (1)2. ActiveX控件的相关操作 (1)3. 单元格内容匹配 (2)4。
单元格填充公式 (3)5。
弹出打开对话框 (3)6. 操作文件夹下的所有工作簿 (3)7. 获取数据区域的最后一行和最后一列 (4)8. 获取列的字母顺序[A~IV] (4)9. 自定义函数返回数组并填充至单元格区域 (4)10. 绘制曲线图 (5)11. 单元格区域拷贝 (5)12. 操纵数据库(查、增、删、改) (6)13。
待定XX (6)1.删除重复行关键字:[a65536].End(xlUp).Row、Offset()、相关双层循环Sub RemoveDuplicate()'删除重复行For i = [a65536].End(xlUp)。
Row — 1 To 1 Step —1 '按倒叙删除For j = [a65536]。
End(xlUp).Row To i + 1 Step —1If Cells(i, 1)。
Value = Cells(j, 1).Value ThenRows(i)。
DeleteEnd IfNextNextEnd SubSub RemoveItem()'删除相邻重复,但不删除隔行重复Dim i As LongWith Range("A2”)’以A2为基准进行单元格偏移Do While .Offset(i, 0)If .Offset(i, 0)。
Value = .Offset(i — 1, 0)。
Value Then 。
Offset(i, 0).EntireRow.Delete i = i + 1LoopEnd WithEnd Sub2.ActiveX控件的相关操作关键字:ActiveX、OLEObjects、ActiveSheet。
OLEObjects遍历控件Dim c As ObjectFor Each c In ActiveSheet.OLEObjectsIf = ”ComboBox” & i Then’…………。
vba常用代码大全
前言我们平时在工作表xx的公式xx常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBAxx不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。
而能在VBAxx直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。
第1.1例ASC函数一、题目:要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。
二、代码:Sub示例_1_01()Dim myNum1%, myNum2%myNum1 = Asc("Excel")'返回69myNum2 = Asc("e")'返回101[a1] = "myNum1= ": [b1] = myNum1[a2] = "myNum2= ": [b2] = myNum2End Sub三、代码详解1、Sub示例_1_01():宏程序的开始语句。
2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。
也可以写为Dim myNum1 As Integer。
Integer变量存储为16位(2个字节)的数值形式,其范围为-32,768到32,767之间。
Integer的类型声明字符是百分比符号(%)。
3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。
Asc函数返回一个Integer,代表字符串中首字母的字符的ASCII代码。
语法Asc(string)必要的string(字符串)参数可以是任何有效的字符串表达式。
如果string中没有包含任何字符,则会产生运行时错误。
4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。
VBA常用代码分类介绍
VBA常用代码分类介绍一、编写VBA代码1、定义变量定义变量的语法:Dim 变量名 as 数据类型变量名:变量的名称可以是字母、数字或其组合,但必须以字母开头,最长不超过40个字符;数据类型:包括Byte、Integer、Long、Currency、Single、Double、Date、String、Boolean、Object、Variant等几种数据类型。
2、定义常量定义常量的语法:Const 常量名 = 字符串常量名:只能是字母、数字或其组合,但必须以字母开头,最长不超过40个字符;字符串:可以是String类型的文本、Boolean类型的true和false、整形数值、单精度数值、双精度数值等;3、编写循环语句循环语句用于重复执行相同的操作,循环语句包括For … Next、Do While…Loop、Do…Loop While以及Do Until…Loop。
For … NextFor … Next语句的语法结构为:For 变量=起始值 to 终止值[Step 步长]Do While…LoopDo While…Loop语句的语法结构为:Do While 条件循环体……… LoopDo…Loop WhileDo…Loop While语句的语法结构为:Do 循环体……… Loop While 条件Do Until…LoopDo Until…Loop语句的语法结构为:Do Until 条件循环体……… Loop二、数据结构1、数组数组是一种结构,其中存储着一系列值,每个值称为一个元素。
VBA 支持一维数组和多维数组。
定义数组的语法结构为:Dim 数组名(维度) as 数据类型2、集合集合类似于数组,不同之处在于集合中元素的个数不是固定的,而是可以随着应用程序的运行而变化。
常用Excel表格VBA代码32条
001.批量创建工作表2020年4月17日4:04Sub NewSht()Dim shtActive As Worksheet, sht As WorksheetDim i As Long, strShtName As StringOn Error Resume Next '当代码出错时继续运行Set shtActive = ActiveSheetFor i = 2 To shtActive.Cells(Rows.Count, 1).End(xlUp).Row'单元格A1是标题,跳过,从第2行开始遍历工作表名称strShtName = shtActive.Cells(i, 1).Value'工作表名强制转换为字符串类型Set sht = Sheets(strShtName)'当工作簿不存在工作表Sheets(strShtName)时,这句代码会出错,然后…… If Err Then'如果代码出错,说明不存在工作表Sheets(t),则新建工作表Worksheets.Add , Sheets(Sheets.Count)'新建一个工作表,位置放在所有已存在工作表的后面 = strShtName'新建的工作表必然是活动工作表,为之命名Err.Clear'清除错误状态End IfNextshtActive.Activate'重新激活原工作表End Sub002.删除全部工作表2020年11月25日22:13Sub DelShet() '删除所有工作表Dim sht As WorksheetApplication.ScreenUpdating = False '关屏幕刷新Application.DisplayAlerts = False '关警告信息 On Error Resume NextFor Each sht In Worksheetssht.Delete '遍历工作表删除NextApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueEnd Sub003.提取工作表名字2020年11月25日22:14Sub GetShtByVba()Dim sht As Worksheet, k As LongApplication.ScreenUpdating = Falsek = 1Range("a:b").Clear '清空数据Range("a:a").NumberFormat = "@" '设置文本格式For Each sht In Worksheets '遍历工作表取表名k = k + 1Cells(k, 1) = NextRange("a1:b1") = Array("工作表名", "是否删除") Application.ScreenUpdating = TrueEnd Sub004.删除指定工作表2020年11月25日22:15Sub DelShtByVba()Dim sht As Worksheet, i As Long, rApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalseOn Error Resume Nextr = Range("a1").CurrentRegion '数据装入数组rFor i = 2 To UBound(r) '遍历并删除工作表If r(i, 2) = "删除" Then Worksheets(CStr(r(i, 1))).Delete NextApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueEnd Sub005.生成带超链接的工作表目录2020年11月25日22:15Sub ml()Dim sht As Worksheet, i&, strShtName$Columns(1).ClearContents '清空A列数据Cells(1, 1) = "目录" '第一个单元格写入标题"目录"i = 1 '将i的初值设置为1.For Each sht In Worksheets '循环当前工作簿的每个工作表strShtName = If strShtName <> Then '如果sht的名称不是当前工作表的名称则开始在当前工作表建立超链接i = i + 1 '累加工作表数量ActiveSheet.Hyperlinks.Add anchor:=Cells(i, 1), Address:="", _SubAddress:="'" & strShtName & "'!a1", TextToDisplay:=strShtName'建超链接End IfNextEnd Sub006.在各个分表创建返回总表的命令按钮2020年11月25日22:16Dim strShtName As StringSub Mybutton()Dim sht As Worksheet, btn As ButtonOn Error Resume NextFor Each sht In WorksheetsWith shtIf .Name <> strShtName Then.Shapes(strShtName).Delete'删除原有的名称为shtn的按钮,避免重复创建Set btn = .Buttons.Add(0, 0, 60, 30)'使用add方法在工作表中添加一个按钮控件,add方法语法如下:表达式.Add(left,right,width,height)'新建按钮,释义见小贴士With btn.Name = strShtName'命令按钮命名.Characters.Text = "返回总表"'按钮的文本内容.OnAction = "LinkTable"'指定按钮控件所执行的宏命令End WithEnd IfEnd WithNextSet btn = NothingEnd SubSub LinkTable()strShtName = "总表"'指定了返回总表的名字,可以根据实际需要修改为目标表的名称,比如“目录”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VBA常用代码:Application.EnableEvents= True/ False ’启用/禁用所有事件Application.DisplayAlerts=True/False ’显示/关闭警告框提示框Application.ScreenUpdating= True/False ’显示/关闭屏幕刷新Application.StatusBar = "软件报专用" ’在地址栏中显示文本,标题栏用Caption属性Application.Cursor = xlIBeam ‘设置光标形状为Ⅰ字形,xlWait为沙漏(等待)形,xlNormal 为正常Application.WindowState = xlMinimized ‘窗口最小化,xlMaximized最大化,xlNormal为正常Application.ActivateMicrosoftApp xlMicrosoftWord ’开启Word应用程序Application.TemplatesPath ‘获取工作簿模板的位置Application.CalculateFull ’重新计算所有打开的工作簿中的数据Application.RecentFiles.Maximum = 2 ’将最近使用的文档列表数设为2Application.RecentFiles(3).Open ’打开最近打开的文档中的第3个文档Application.AutoCorrect.AddReplacement "sweek", "软件报" ’自动将输入的"sweek"更正为"软件报"Application.Dialogs(xlDialogPrint).Show ‘显示打印文档的对话框Application.OnTime Now + TimeValue("00:00:45"), "process" ’45分钟后执行指定过程Application.OnTime TimeValue("14:00:00"), " process " ’下午2点执行指定过程Application.OnTime EarliestTime:=TimeValue("14:00:00"), _Procedure:="process", Schedule:=False ’取消指定时间的过程的执行工作簿/工作表篇ActiveWorkbook.Sheets.Count ’获取活动工作薄中工作表数ActiveWorkbook.LinkSources(xlExcelLinks)(1) ‘返回当前工作簿中的第一条链接ThisWorkbook.Worksheets(“sheet2”).Visible=xlSheetHidden ‘隐藏工作表,与在Excel菜单中执行“格式—工作表—隐藏”操作一样ThisWorkbook.Worksheets(“sheet2”).Visible=xlSheetVeryHidden ‘隐藏工作表,不能通过在Excel菜单中执行“格式—工作表—取消隐藏”来重新显示工作表ThisWorkbook.Worksheets(“sheet2”).Visible=xlSheetVisible ‘显示被隐藏的工作表ThisWorkbook.Sheets(1).ProtectContents ‘检查工作表是否受到保护ActiveSheet.Columns("B").CutActiveSheet.Columns("F").Insert ‘以上两句将B列数据移至F列,原C列后的数据左移ActiveSheet.Range(“A:A”).EntireColumn.AutoFit ‘自动调整当前工作表A列的列宽ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlTextValues) ‘选中当前工作表中常量和文本单元格ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlErrors+xlTextValues) ‘选中当前工作表中常量和文本及错误值单元格edRange.Rows.Count ‘当前工作表中已使用的行数ThisWorkbook.Worksheets.Add ThisWorkbook.Worksheets(3), , 2 ‘在第3张工作表之前添加2个新的工作表ActiveSheet.Move After:=ActiveWorkbook. _Sheets(ActiveWorkbook.Sheets.Count) ’将当前工作表移至工作表的最后Worksheets(Array(“sheet1”,”sheet2”)).Select ’同时选择工作表sheet1和sheet2edRange.FormatConditions.Delete ‘删除当前工作表中应用的条件格式Cells.Hyperlinks.Delete ‘取消当前工作表中所有单元格的超链接ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页脚显示文件的路径ActiveSheet.PrintPreview Enablechanges:=False ‘禁用显示在Excel的“打印预览”窗口中的“设置”和“页边距”按钮单元格/单元格区域篇edRange.Row ‘获取已使用的单元格区域的第一行的行号Range(“A65536”).End(xlUp).Row ‘返回A列最后一行(即记录的总条数)cell.Range(“A1”).HasFormula ‘检查单元格或单元格区域中的第一个单元格是否含有公式或cell.HasFormula ‘工作表中单元格是否含有公式Target.EntireColumn.Select ‘选择单元格所在的整个列,Target.EntireRow.Select为选择单元格所在的整行ActiveCell.Row ‘活动单元格所在的行号,ActiveCell.Column为活动单元格所在的列数ActiveWindow.ScrollRow = 2 ’将当前工作表窗口滚动到第2行ActiveWindow.ScrollColumn = 5 ’将当前工作表窗口滚动到第5列Worksheets("sheet1").Range("A1:C5").CopyPicture xlScreen, xlBitmap ’将指定的单元格区域的内容复制成屏幕快照Selection.Hyperlinks.Delete ‘删除所选区域的所有链接ActiveSheet.Cells(1, 1).Font.Bold = TRUE ‘Bold属性用于设置字体是否为加粗,Size属性设置字体大小,ColorIndex属性设置字体颜色(其值为颜色索引号),Italic属性设置字型是否为倾斜,Name属性设置字体名称ActiveSheet.Cells(1, 1).Interior.ColorIndex = 3 ‘将单元格的背景色设置为红色IsEmpty (ActiveCell.Value) ’判断活动单元格中是否有值ActiveCell.Value = UCase(ActiveCell.Value) ’将当前单元格中的字符转换成大写ActiveCell.Value = StrConv(ActiveCell.Value, vbLowerCase) ’将活动单元格中的字符串转换成小写ActiveCell.CurrentRegion.Select ’选择当前活动单元格所在的连续的非空区域,也可以用Range(ActiveCell, UsedRange.End(xlDown)).SelectActiveCell.Offset(1,0).Select ’活动单元格下移一行Range(“B2”).Offset(ColumnOffset:=1)或Range(“B2”).Offset(,1) ‘读取指定单元格右侧单元格中的数据Range(“B2”).Offset(Rowoffset:=-1)或Range(“B2”).Offset(-1) ‘读取指定单元格上一行单元格中的数据Range(“A1”).Copy Range(“B1”) ’复制单元格A1中的内容到B1中Range(“A1:D8”).Copy Range(“H1”) ’将指定单元格区域复制到从H1开始的区域中,用Cut方法可以实现剪切操作ActiveWindow.RangeSelection.Value = "软件报" ’将指定字符串输入到所选单元格区域中窗体(控件)篇Option Explicit ’强制对模块内所有变量进行声明Userform1.Show ‘显示用户窗体Load Userform1 ‘加载一个用户窗体,但该窗体处于隐藏状态Userform1.Hide ‘隐藏用户窗体Unload Userform1 或Unload Me ‘卸载用户窗体Me.Height=Int(0.5 * ActiveWindow.Height) ‘窗体高度为当前活动窗口高度的一半,宽度用ActiveWindow. Width属性boBox1.AddItem Sheets("Sheet1").Cells(1, 1) ‘将指定单元格中的数据添加到复合框中ListBox1.List=MyProduct() ‘将数组MyProduct的值添加到列表框ListBox1中ListBox1.RowSource=”Sheet1!isum”‘将工作表Sheet1中名为的isum区域的值添加到列表框中ListBox1.Selected(0) ‘选中列表框中的指定的条目ListBox1.RemoveItem ListBox1.ListIndex ‘移除列表框中选中的条目If MsgBox(“要退出吗?”,vbYesNo)<>vbYes Then Exit Sub ’返回值不为“是”,则退出Config=vbYesNo+vbQuestion+vbDefaultButton2 ’使用常量的组合,赋值组Config变量,并设置第二个按钮为缺省按钮MsgBox “This is the first line.”& vbNewLine & “Second line.”’在消息框中强制换行,也可用vbCrLf代替vbNewLine。