中企动力 > 商学院 > excel宏与vba
  • ?

    Excel学习之VBA(一)

    Tricia

    展开

    1.如何将【开发工具】选项卡添加到Excel页面

    默认情况下,因为大多数人并不经常用到【开发工具】选项卡,所以微软将其隐藏了起来,打开方式如下:

    1.1.office2010及其以上版本:

    (1).【文件】===》【选项】===》【自定义功能区】===》【主选项卡】===》在功能区的“复选 框”中找到【开发工具】选项,并将其选中

    (2).打开Excel后,在默认界面下,将鼠标移动至任意“选项卡”所在区域,单击右键选择【自定义功能区】===》 【主选项卡】===》在功能区的“复选框”中找到【开发工具】选项,并将其选中

    1.2.office2007版:

    点击【office】===》【Excel选项】===》【常用】===》在功能区找到【开发工具】复选框并将其选中

    说明:如果上述方法无法实现,说明office软件安装过程中没有安装VBA如果仍要使用VBA,建议重新安装office

    2.允许Excel运行VBA

    默认情况下,为避免VBA产生宏病毒污染破坏电脑运行,office禁止了VBA代码的正常运行,要想正常运行VBA,需要先解除禁止,如下:

    2.1.office2010及其以上版本:

    【开发工具】选项卡===》宏安全性===》【宏设置】===》将【启用所有宏】选中===》【确定】===》重启EXcel

    2.2. office2007版:

    【工具】===》【宏】===》【安全性】===》【宏设置】===》将【启用所有宏】选中===》【确定】===》重启EXcel

    3.打开VBE(Visual Basic Editor)

    3.1.快捷键:Alt + F11

    3.2.手动方式:【开发工具】===》【Visual Basic】===》【VBE界面】

    4.开始编写VBA

    和大多数的IDE一样,VBE分为基本的【菜单栏】,【工具栏】,【工程资源管理器】,【属性区域】,【代码区域】以及【状态栏】,一般编写的代码称为“宏”,多个宏又可以组合成一个“模块”,但在【工程资源管理器】中默认情况下是没有模块的,需要通过录制宏或手动插入模块,如下

    4.1. 手动插入模块

    在【工程资源管理器】中的空白区域或选中单击右键===》【添加】===》【模块】

    4.2录制宏

    【开发工具】===》【录制宏】===》命名===》【确定】===》完成一系列表格操作后===》【停止录制】===》【宏】===》点击录制的宏===》【编辑】,即可看到VBE中新增了一个模块

  • ?

    什么是宏?新人入门必须要了解这6个宏的使用场景

    小猪

    展开

    在日常的工作中,数据处理的时候有大一部分是一些常规和繁琐的操作,这个时候我们经常会想到如何去简化我们这些操作,这就需要我们运用到Excel内置的宏功能,他可以帮我们以最快的速度来处理我们日常最简单和繁琐的工作。下面我们就来学习一下新手入门必须要了解的几个常见。

    一、什么是宏?

    我们先来看一下什么是Excel中的宏?

    假设我们的Excel有一个任务:在C列值的基础上加上B列的值。

    选取B列并复制选取C列右键 - 选择性粘贴 - 加

    就这样这么一个简单重复的工作,如下图:

    如上,你在Excel中进行的一系列的操作过程,就是一个宏。操作过程(宏)可以是一步也可以是若干步,使用一个Excel命令或多个Excel命令。

    宏,我们也可以看成是一个个可以完成特定目标的功能

    二、为什么学习宏?

    Excel提供了很多功能,可以完成各种操作。筛选数据有自动筛选和高级筛选,汇总数据有分类汇总、数据透视表等.......

    但....还是有Excel无能为力的时候。比如:

    批量取消工作表隐藏批量合作多个工作表或Excel文件批量......

    有办法。就是Excel中没有的功能,我们自已添加,也就是我们自已编写可以完成指定功能的宏。就象Excel内置功能一样,可以供我们随时使用。

    三、怎么编写宏

    有一种语言,它的名称叫VBA(visual baisic for application),它是Excel所支持的开发语言,也就是说,我们可以用VBA语言来编写我们需要的功能(宏),除此之外,我们还可以用VBA来编写Excel函数。

    四、在哪编写宏

    有一个窗口,都叫它VBE编辑器。你可以在工作表标签上右键菜单中点击”查看代码“,就可以打开它。更多的是我们通过”开发工具“选项卡打开这个界面。

    需要什么功能,就可以编写什么功能,需要什么函数,就可以编写什么函数,工作中再也没有我们完不成的任务。

    五、新手入门必须要了解的6个宏的使用场景

    1、禁止插入工作表

    Private Sub Workbook_NewSheet(ByVal Sh As Object)

    MsgBox "本工作簿禁止插入新工作表"

    Application.DisplayAlerts = False

    Sh.Delete

    Application.DisplayAlerts = True

    End Sub

    2、禁止打开Excel文件

    Private Sub Workbook_BeforePrint(Cancel As Boolean)

    MsgBox "此excel文件禁止打印,如需打印请与管理员联系"

    Cancel = True

    End Sub

    3、在VBA中调用Vlookup和Sumif函数

    Sub 调用1()

    Dim arr, arr1

    arr = Range("a2:d6")

    arr1 = Application.VLookup(Array("B", "C"), arr, 4, 0)

    End Sub

    Sub 调用2()

    Dim T

    T = Timer

    Dim arr

    arr = Application.SumIf(Range("a2:a10000"), Array("B", "C", "G", "R"), Range("B2:B10000"))

    MsgBox Timer - T

    Stop

    End Sub

    4、批量取消工作表隐藏

    Sub 取消隐藏()

    For x = 1 To Sheets.Count

    If Sheets(x).Name <> "总表" Then

    Sheets(x).Visible = -1

    End If

    Next x

    End Sub

    Sub 隐藏()

    For x = 1 To Sheets.Count

    If Sheets(x).Name <> "总表" Then

    Sheets(x).Visible = 0

    End If

    Next x

    End Sub

    5、拆分表格成单独的Excel文件

    Sub 拆分表格()

    Dim x As Integer

    Dim wb As Workbook

    Application.ScreenUpdating = False

    For x = 2 To 32

    Sheets(x).Copy

    Set wb = ActiveWorkbook

    With wb

    .SaveAs ThisWorkbook.Path & "/3月/" & Sheets(x).Name & ".xlsx"

    .Close True

    End With

    Next x

    Application.ScreenUpdating = True

    End Sub

    6、合并多个Excel文件到一个Excel中

    Sub 合并表格()

    Dim mypath As String

    Dim f As String

    Dim ribao As Workbook

    Application.ScreenUpdating = False

    mypath = ThisWorkbook.Path & "/3月/"

    f = Dir(ThisWorkbook.Path & "/3月/*.xlsx")

    Do

    Workbooks.Open (mypath & f)

    With ActiveWorkbook

    .Sheets(1).Move after:=ThisWorkbook.Sheets(Sheets.Count)

    End With

    f = Dir

    Loop Until Len(f) = 0

    Application.ScreenUpdating = True

    End Su

    根据上面的不同场景,我们可以在代码编辑窗口输入后可以实现我们特定的功能。所以说学会宏的功能和操作,我们可以更加简单的来处理我们的日常工作内容。

    原创声明:文章发布于作者逆风头条号、百家号:Excel函数与VBA实例,赶快学习吧

  • ?

    关于Excel VBA编程的小技巧

    艾玛

    展开

    1、 根据条件删除行

    Sub deleteRows(strTable, condition1, condition2)

    Dim i, j, iMax, jMax As Long

    Dim iicondition1, iicondition2 As Integer

    With Worksheets(strTable)

    iMax = .UsedRange.Rows.Count

    jMax = .UsedRange.Columns.Count

    i = 2

    Do While i < iMax + 1

    iicondition1= .Cells(i, 1)

    iicondition2 = .Cells(i, 2)

    If (iicondition1= condition1And iicondition2 = condition2) Then

    .Rows(i & ":" & i).Delete shift:=xlUp

    iMax = iMax - 1

    Else

    i = i + 1

    End If

    Loop

    End With

    End Sub

    2、 删除所以的使用range

    Worksheets("sheetName").UsedRange.Delete shift:=xlUp

    3、打开某指定路径的文件夹对话框

    Function GetFileName(ByVal DialogType As MsoFileDialogType, ByVal defaultPath As String) As String

    With Application.FileDialog(DialogType)

    .Title = "XXXX:"

    .AllowMultiSelect = False

    .Filters.Clear

    .Filters.Add "Excel Files", "*.xlsm"

    .Filters.Add "All Files", "*.*"

    .InitialFileName = defaultPath

    If .Show = True Then

    GetFolderName = .SelectedItems(1)

    End If

    End With

    End Function

    4、截取字符段

    从右边开始,查找某字符,然后截取其后面的字符串。

    xlsPath2 = Right(xlsPath, InStr(StrReverse(xlsPath), "\") - 1)

    5、Sharepoint数据的刷新

    Worksheets("Sharepoint对应的sheet").Range("A1").ListObject.QueryTable.Refresh BackgroundQuery:=False

    6、当前使用的range的取得

    .UsedRange ‘对应的range

    .UsedRange.Rows.Count ‘对应的行号

    .UsedRange.Columns.Count 对应的列号

    7、在Excel内部打开另外一个Excel (不显示,隐藏)并读取其数据

    Set xlsApp = New Excel.Application

    xlsApp.Visible = False

    xlsPath = ThisWorkbook.Path

    Set xlsWB = xlsApp.Workbooks.Open(xlsPath, Null, ReadOnly)

    ‘读取/写入对应的sheet

    X = xlsWB.worksheets(“xxxx”).cells(i,j)

    xlsWB.worksheets(“xxxx”)..Cells(i, j).Formula = "=E” & i

    8、计算处理

    '如果你的表中有大量的计算单元格,那就需要关闭自动计算,否则慢的要死

    ‘在VBA开始,设置为手动

    'Application.Calculation = xlCalculationManual

    'Application.ScreenUpdating = False

    ‘在VBA开始,设置为自动

    'Application.Calculation = xlCalculationAutomatic

    'Application.ScreenUpdating = False

    注意,还有一种方法是再打开本excel的时候,就设置为手动,对于需要计算的sheet,单独在其数据填充完毕后,执行计算操作。

    例如: Worksheets("XXXXX”).Calculate ‘这是效率最高一种方法。当然,你也可以对某些range,单独进行range计算。

    9、Range到range的只读拷贝、黏贴

    Worksheets("srcSheet").Range(.Cells(1, 1), .Cells(x,y)).Copy

    Worksheets("dstSheet").Cells(1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    10、Cell内容的替换操作

    Worksheets("CostTable").Cells.Replace What:="Original Content", Replacement:="replease Content", LookAt:=xlPart, _

    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    11、自动填充

    Worksheets("xxxx")..Range("D8:F8").AutoFill Destination:=.Range(.Cells(8, 4), .Cells(rMax, 8)), Type:=xlFillDefault

    12、获取pivot的使用区域、

    Set pvt = Worksheets("xxxx").PivotTables("PivotTable_xxxx")

    Set rngTable = pvt.TableRange1

    13、刷新pivot

    Worksheets("xxxx").PivotTables("PivotTable_xxxx").PivotCache.Refresh

  • ?

    Excel2010三种快速打开VBA界面的小技巧

    屈夜安

    展开

    Visual Basic for Application(简称VBA)是一种必须依赖母系程序方能使用的程序,属于VB程序语言的一个子集。我们常用的Excel电子表格除了常规的可视化命令之外,还可以通过VBA代码来操控Excel实现一些较复杂的逻辑运算及统计分析等。我们不仅可以使用代码实现数据的统计运算,还能实现图表的自动生成于刷新,以及图形的旋转与移动。在网上我们可以找到有很多大牛基于Excel的VBA,开发了一些具有特定功能的代码,以及酷炫的游戏界面等。如果您对这方面感兴趣的话,那你必须掌握的第一步操作就是打开VBA界面来认实它。

    复杂的逻辑运算使我们身心俱疲

    闲话少聊,下面就重点介绍一下从Excel窗口切换到VBA界面的操作技巧。

    方法一是通过功能区的选项卡来实现。首先在菜单栏中找到开发工具项,然后在代码功能模块中找到Visual Basic命令按钮,单击它即可快速切换到VBA界面。若菜单栏中没有开发工具这一项,需要设置自定义功能区下的主选项卡来调出该命令。

    功能区的主选项卡-开发工具

    2.方法二是通过工作表标签来实现。首先在Excel界面左下角找到工作表标签区域,右键单击任一一个工作表标签,本教程以Sheet1工作表为例,在弹出的右键菜单中选择查看代码命令,随后即可激活VBA界面。

    Excel工作表标签

    3.方法三是通过快捷键法实现。在Excel操作界面下,按下组合键Alt+F11即可快速切换到VBA界面;在VBA界面下按此组合键即可快速关闭VBA窗口。

  • ?

    太实用了!Excel VBA常用代码!

    独狼

    展开

    前两天有两位朋友留言想收集一些VBA的常用代码,今天开始会陆续分享一些!

    记得收藏好哦,因为今后你应用到稍大型Excel VBA程序时,这其中某些代码肯定会用到。

    来看看都是哪些常用代码:

    下面先举一个简单的例子:

    场景再现:在当前的工作表中插入一张e盘中名为1.jpg的图片(长350、高300,距离Excel左侧90、上边框230)

    操作方法:

    第一步,打开vba代码区,输入通用格式【输入 sub 统计()回车即可】,并将名称改为“统计”;

    第二步,输入控制语句(ActiveSheet.Shapes.AddPicture "e:.jpg", True, True, 90, 230, 350, 300);

    第三步,看看结果。

    后面会分享更多关于Excel VBA的知识,欢迎大家留言、讨论!

  • ?

    EXCEL用VBA代替VLOOKUP函数,速度更快更通用

    Ester

    展开

    VLOOKUP函数是一个纵向查找函数,它是按列查找,最终返回该列所需查询列序所对应的值。

    用VLOOKUP函数来查找很方便,不过它的缺点很明显:

    1、速度慢,特别是在数据量大的情况下。

    2、每个单元格你都要维护好公式,如果对应不到会出现#N/A,不是很美观,当然你可以用别的公式来消除,不过这又增加了公式的复杂度。

    用VBA代替VLOOKUP函数,不仅速度快,而且把它单独做成模版,下次有类似对应操作的需求时,可以直接复制粘贴进去来使用,不用再维护调整公式数量了,通用性强。

    举个例子:把表1学号信息填到表2学号里面

    VBA代替VLOOKUP函数

    方法一、最笨的方法就是按照姓名筛选手工填或者CTRL+F批量替代,数据量大了根本不好使。

    方法二、在表2学号列填写VLOOKUP函数,比如G2=VLOOKUP(F2,A1:B4,2,FALSE), G3=VLOOKUP(F3,A1:B4,2,FALSE),以此类推。

    方法三、用VBA代码,按ALT+F11进入工程界面,输入右侧代码,运行就可以了。

    下次遇到类似的需求只要把相应的数据复制粘贴到表1和表2,运行一下就可以了。

    附上截图代码

    Sub 引用()

    Dim i%, r%

    Dim arr1, arr2

    arr1 = Sheets("sheet1").[a1].CurrentRegion '表1数据赋值给数组arr1

    arr2 = Sheets("sheet1").[f1].CurrentRegion '表2数据赋值给数组arr2

    r = 1

    For r = 1 To UBound(arr2) '可以看成表2的行数

    For i = 1 To UBound(arr1) '可以看成表1的行数

    If arr2(r, 1) = arr1(i, 1) Then '可以看成如果表1和表2各自的第1列数据有一样的

    arr2(r, 2) = arr1(i, 2) '那么把表1对应的第2列数据赋值给表2的第2列数据

    Exit For '结束循环遍历

    End If

    Next

    Sheets("sheet1").[f1].Resize(UBound(arr2), 2) = arr2 '把更新后的数组arr2复制到表2

    End Sub

  • ?

    Win10系统下启用Excel2016宏命令的方法

    忆南

    展开

    因为Win10系统安全性比较高,原来在XP轻松运行的Excel宏都被禁用,显示结果都是未注册,没有权限无法加载之类的警告。

    这个问题影响了很多程序软件功能的调用,连CATIA都无法启用自带的Excel宏。小编研究了半天才弄通了关键。首先打开系统盘以下目录,C:\Program Files (x86)\Common Files\Microsoft Shared\VBA

    打开VBA6文件夹,将里面的文件VBE6EXT.OLB复制到C:\Program Files\Common Files\microsoft shared下的VBA7.1文件夹里面。

    有些同学不知道这个简便方法,还要到网上专门下载VBE6EXT.OLB文件。其实Program Files (x86)本身就有的。直接复制过去即可。另外Excel2016一定要以管理员身份运行。

    一般接下来还要设置下宏安全性:

    在弹出的窗口中依次点击“信任中心”-“信任中心设置”-“宏设置”-“启用所有宏”即可。

  • ?

    如何保存含宏指令(VBA代码)的Excel工作簿

    寻绿

    展开

    宏指的是一段操作指令,它也属于VBA的一种。通常情况下,在使用Excel处理数据时,如果碰到需要进行较多的重复性操作,可以通过录制宏命令来,将这些操作指令记录下来,然后让Excel傻瓜式的运行这些指令,即可实现化繁为简,在提高工作效率的同时还能保证质量的稳定,这就是为啥有些人在处理重复性操作时,是那么的得心应手,而有的人却是那么举步维艰,叫苦连天。除此之外,Excel还赋予了使用者极大的操作灵活性,使用者可以自己编辑VBA代码,实现一些Excel本身常规操作无法实现的功能,如拼图游戏等。当需要的代码指令已经录制好或编辑好之后,又该如何将它们保存下来以便下次操作使用呢?本教程将介绍几种方法帮你轻松搞定这一点。

    用最小的代价得到最好的东西

    1、对于一些仅含简单录制宏指令的Excel电子表格,可以直接单击Excel快速访问工具栏中的保存命令(保存命令快捷键为Ctrl+S)进行保存,此时的Excel工作簿的后缀名为xlsx。

    保存含宏指令技巧

    2、可以将含有宏指令的工作表另存为启用宏的Excel工作簿,具体操作是单击Excel界面菜单栏中的文件命令,然后找到另存为下的启用宏的Excel工作簿命令,单击该命令,设置保存路径即可实现宏指令的保存,此时文件的后缀名为xlsm。此方法保存的文件适用于不低于保存版本的Excel软件。

    复杂事情轻松应对

    3、考虑到Excel向下兼容的特性,如果想让宏代码文件通用于Excel各个版本,建议将含宏指令的工作簿保存成低版本,即Excel97-2003工作簿。具体操作是,单击另存为下的Excel 97-2003命令,然后选择保存路径即可,该方法保存的文件后缀名为xls。

    保存宏指令文件的后缀名差异

  • ?

    Excel 打开时提示需要VBA的宏语言支持时怎么回事

    黑慕斯

    展开

    因为文档中有宏,开启宏就可以了,操作方法如下:

    1.打开office excel 2013,鼠标单击“文件”。

    2.鼠标单击“选项”。

    3.鼠标单击“信息中心”。

    4.单击“信息中心设置”。

    5.选择”宏设置“------启用所有宏”。


    6.鼠标单击“确定”。宏启用完成。

    (本文内容由百度知道网友茗童贡献)

  • ?

    1个案例教你学会Excel中的VBA

    凯文

    展开

    可能很多朋友不知道Excel中VBA的用途。那什么是VBA呢?

    一句话概括:在Excel中想实现什么功能,就可以用VBA语言编写一段程序去完成。

    今天通过例子带大家了解Excel中的VBA!

    软件说明:Excel 2010版本

    场景再现:表格中点击按钮,向单元格E1中输入数字 “233”,并且能够实现清除!

    第一步、打开编写VBA代码的窗口

    在Excel表格中编写VBA的窗口叫VBE编辑器,有两种打开的方法。

    在工作表标签上右键 - 查看代码按Alt+F11

    第二步、创建写VBA代码的地方

    有朋友肯定会问:“我没学会编程怎么办?”、“我都没见过代码能行吗?”;别急!我的回复是肯定的!

    在哪编写代码呢?有好几种方式,今天先学最常用的:“插入” - “模块”。新建一个模块用来存放编写的代码;记住:修改模板的名称:我的VBA模板【如下图虚线标注】

    第三步、开始写代码

    新建模板后,在右侧的空白位置就是编写代码的地方。可以执行的VBA代码,结构是这样的:

    Sub 程序名(参数)可以执行任务的代码End Sub

    因为例子中我要进行输入与清除的操作,输入Sub 程序名()然后回车,End Sub就会自动输入;如下图:

    在开始和结束语句之间输入代码,执行在单元格A1中输入数字"233"

    Range("E1") = 123

    备注:在VBA中,Range("单元格地址")来表示单元格。在单元格中输入值,直接用=值 即可(字符串两边要加双引用),如果清空则 =""。

    再编写一段清空代码:

    第四步、测试运行代码

    在编写代码时经常要测试是否正确。测试方式是把光标放在代码行的任意位置【下图中“测试按钮”的位置】,点击运行小按钮进行测试;同样清空代码也一样。

    第五步、点击按钮执行VBA代码

    在Excel中插入的图形、图片、按钮控件都可以执行VBA代码。让它们执行很简单,点击“插入” - “矩形” - “指定宏”

    只需要右键菜单中点击指定宏 - 选取编写的宏名称,选择“输入”,添加输入按钮。

    同样添加清除按钮:

    当然自己可以调整字体的颜色、字体,让其变得更加美观!

    此时,通过VBA设置的输入“233”,并可以点击清除!

    第六步、保存VBA代码

    此时的VBA代码应该是既有输入代码又有清空代码;最后需要保存为“启用宏的工作簿"类型【注意下图中虚线框标注】,VBA代码才能保存下来。

    好了!今天的分享就到这里,是不是感觉VBA也没有想象的那么难?

    赶快转发、关注吧,更多技巧尽在头条号中!

excel宏与vba

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP