中企动力 > 商学院 > excelvba入门
  • ?

    不会VBA一样可以轻松获取Excel对象属性用自定义函数

    Francis

    展开

    之前零散开发过一些自定义函数获取Excel对象属性,此次再细细地把有价值的属性都一一给开发完成,某些场景下,有这些小函数还是可以比较方便地实现一些通过Excel界面没法轻松获取到的信息。

    函数清单

    可在公式=》插入函数里找到此类的函数清单

    大部分函数取的是单元格的一些属性。

    函数清单

    同时也做了个示例的文件,方便使用和查阅。

    函数示例工作薄

    具体函数功能

    GetHyperlinksAddress函数

    从网页上复制内容到Excel中比较有用,可以提取网页的超链接

    GetRowHeight函数

    获取行高

    GetColumnWidth函数

    获取列宽

    GetCellFormular函数

    获取单元格公式内容

    GetCellCommentText函数

    获取批注信息

    GetCellText函数

    获取单元格显示的内容

    GetCellNumberFormat函数

    获取单元格的数字格式设置内容

    GetCellInteriorColor函数

    获取单元格填充颜色值

    GetCellFontColor函数

    获取单元格的字体颜色

    GetRangeAddress函数

    获取单元格的地址,不同参数下可获得相应的绝对、相对引用的地址格式

    GetCurrent相关函数

    获取工作表、工作薄的名称信息

    总结

    万丈高楼平地起,任何一个精彩的Excel应用,都是多方的知识和功能联合造就的,这些小小的自定义函数,某些时候会是某个数据应用里一个很不错的功能落地点。积累多一些知识,真正应用时就可以有丰富的智囊可供使用。

  • ?

    自学VBA,编写自己的第一个VBA工具,录制宏

    梦菲

    展开

    本节目标是让每个人能自己编写第一个VBA程序,先来看看几个前置条件。

    1. Excel运行宏代码的时候需要在Excel中设置启动宏,如何开启请查看下图。

    2. 宏代码只能保持在.xls或者xlsm格式的文件中,所以在编写完成后保存文件的时候一定记住选择.xls/.xlsm格式,否则你花半天写大代码都不翼而飞了。

    3. 在Excel菜单中添加“开发工具”菜单,“开发工具”菜单里面都是用来开发VBA的菜单。

    4. 快捷键Alt+F11,按这个快捷键会直接进入到VBA的编译器内,可以在里面编写你的VBA代码了。

    下面来编写自己的第一个VBA工具,

    1.打开Excel工具

    2.在Sheet1中第一列录入一些信息

    3.点击“开发工具”菜单,再点击“录制宏”按钮。

    4.选中第一列,按Ctrl+C复制一下,再选中Sheet2,粘贴数据到第一列

    5.选择“data”菜单中取重复的按钮,给第一列去重复。

    6.点击“开发工具”菜单,停止录制宏。

    好了,第一个VBA工具已经完成了,接下来看看如果运行工具。

    1.删除掉Sheet2第一列数据,回到Sheet1

    2.选择“开发工具”中“宏”菜单,在弹出的对话框中,你会看到有一个命名为Macro1(具体看电脑生成情况)的方法,再点击对话框中右边的“Run”按钮。

    怎么样,是不是发现自己刚才的手动一步一步的操作,现在就只需要一个按钮都完成了。有没有瞬间感觉太不可思议,这个实例还只是入门级别的,你跟着学到后面才会发现真正的能提高工作效率的自动化工具的艺术。今天你学到了吗?给大家留一个思考题,录制宏能录制下自己所有的操作,是不是只要使用录制宏吧自己的操作都录制下来,一个真正能使用的自动化工具就完成了吗?相信经过大家的思考,能帮忙更快理解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」Excel函数基础入门

    Xylona

    展开

    1-1进入函数编辑模式

    进入数编辑模式有两种,一是点击公式选项卡中的插入公式,这个不建议使用的,二是直接在单元格内输入=就进入了函数编辑模式。

    1-2常见运算符

    四大运算符加减乘除,可以说无人不知。

    连接符是数字7上面那个符号,按住shift的同时点击数字7键即可输入连接符,其作用是将两个文本或数字连接到一起。

    判断符的结果是true或false,即代表真和假。(注意事项:切换至英文编辑模式才可打出大于小于号,否则打出来的是《》)

    1-3自动填充

    当鼠标移动到单元格右下角时鼠标会变十字光标可进行填充,复制填充与数据规律填充。

    1-4引用

    引用是公式运用中一个必用功能,有相对引用,绝对引用,混合引用。

    Excel的每个单元格都有自己的位置标记,横向为字母,竖向为数字,第一个单元格即为A1。认真观察单元格位置变化。

    所谓引用就是函数编辑模式可以通过位置来引用某个单元格的值或文本。

    点击函数编辑内容,仔细看颜色的不同。

    以上都是相对引用的操作,没有对位置的数字与字母进行任何的修改,相对引用的一个最重要的实践就是结合填充,完成一次函数编辑即可进行多次函数应用。

    相对引用顾名思义就是填充的位置变化导致单元格引用的同步变化,即上个例子中向下填充,函数中的所有单元格引用位置同步向下移动。

    那么绝对引用就是不同步移动,初次编辑引用的单元格在哪,填充后也不变,那么如何绝对引用?

    详细看动画中对引用点击F4后的效果。(将光标点击到引用E8后点击键盘F4键)

    点击F4后相对引用会被加入两个$符号,起固定的位置,也就是意味着引用中行与列已被固定引用。

    混合引用并不常用,混合引用即只固定列或固定行,按F4第一次会固定行列,再按一次便是固定行,再按一次便是固定列,再按一次便是相对引用,形成一个循环切换。

    混合引用思考:

    引用,即代表位置引用,不代表实际数值,即被引用的值改变,会引起引用的同步改变。

    思考并动手:下图填充的原理是什么?

  • ?

    一分钟教你入门Excel自定义函数

    卜紫夏

    展开

    新函数班级的学员提了一个问题:如何去除数字后面的0?

    这种情况比较特殊,通常情况下,0都是在数字前面。

    要去除前面的0就比较容易,只要让数字参与运算就可以。

    再将数字反转过来,就是最终的结果。

    也就说,要从A列变成D列的最终效果,需要先实现将数字反转过来,再去除数字前面的0,最后再一次将数字反转。

    在常规的函数中没有反转函数,而VBA中StrReverse函数就是反转函数。这里,卢子教你一步步使用自定义函数。

    以下内容,WPS不可以使用。

    Step 01按快捷键Alt+F11,插入模块。

    Step 02输入一段非常简单的代码,意思就是自定义一个函数叫反转数字,这个函数只有一个参数。

    Function 反转数字(Str As String)反转数字 = StrReverse(Str)End Function

    Step 03在单元格输入自定义函数,这样就完成了一个简单的自定义函数的全部操作过程。

    在VBA中,其实也可以跟常规公式一样,实现嵌套,在函数前面加--就实现去除前面的0。

    Function 反转数字(Str As String)反转数字 = --StrReverse(Str)End Function

    说明,这样用Val也可以将文本转换成数字。

    反转数字 = Val(StrReverse(Str))

    再嵌套一个反转函数StrReverse,就大功告成。

    Function 反转数字(Str As String)反转数字 = StrReverse(--StrReverse(Str))End Function

    其实入门Excel自定义函数并不难,有心学习都可以。

  • ?

    关于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

  • ?

    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学习的最快方法就是借鉴,没有之一

    伴笛声

    展开

    如果您已经掌握了Excel VBA的基本概念和简单语法,需要快速提高技术水平,以便可以早日完成各种简化工作的小程序,甚至能够编制功能强大的报表系统。

    于是,但凡有教程自称为“秘籍”或“宝典”的,都会引发大家的无限遐想。因为在各种武侠小说中,某人物因为一本(甚至只是几页)武学秘籍而改变命运、屌丝逆袭的经典桥段实在太多了,让人无限向往。但是,如果冷静分析一下前后情节,您就可以了解到这样的三个事实。

    对应这三条,我们来看看Excel VBA这门武功如何。

    如果要对Sheet1的A1:A100单元格区域进行汇总,按组合键就可以了,手快只需要0.1秒。如果每天要对1000个工作簿的Sheet1的A1:A100单元格区域进行汇总,那么只会自动求和的绝顶高手就想跳楼了。可是对于学习过VBA的人来说,几行代码就可以解决问题。

    在信息时代,技能学习信息只有过剩没有限制。即对于多数学科、技能,只要你想学习,教材是永远不缺的,老师也非常容易找。以前都是“收徒弟”,现在基本上是“收师傅”了。

    想学有所成,时间和精力是必需的,从古至今皆如此。当然,我很期待有一天能像《骇客帝国》里那样学习技能——直接下载到大脑里就行了。

    这么一分析,我刚才说的“快速提高”岂非奢望而已?那也未见得。首先,教材虽多,却有良莠之分,有适合之分,选择适合自己的优秀教材,那么就能快人一步。其次,注重学习方法,循序渐进,将有限的学习时间投入到最有价值的学习环节中,学习过程中少走弯路,那么又能快人一步。有了这两个基础,再辅以必要的学习时间,那么必能事半功倍,获得“快速提高”了。

    谈到循序渐进,在Excel VBA学习之路上具体应该怎么做呢?下图内容是值得参考的阶段性指标和学习重点。

    “拿来主义”很流行,也很有效,而且绝不丢人。所以,看懂别人的代码,然后修改之,变为自己的代码,这是一种能力。先啃小段的代码,再研究完整的程序,逐步提高。顶尖的编程高手通常都有自己的代码库,几乎所有的新程序都是从代码库中调取所需的模块修改后搭建而成的,而绝不是从头一行一行写出来的。高手们平时很重要的工作就是维护好自己的代码库。

    本书一个很重要的使命就是成为学习者的代码库,所有的代码都可以拿来即用。对于学习者来说,花时间去多读、读懂代码,是实现快速提高水平的保障。

    当然,我们鼓励“拿来主义”,可不是在教您如何“抄袭软件”。我们只能学习他人分享的代码,或者是教材上的代码。您不可以打着学习的幌子,破解别人的软件,而且还把作者写成您自己。

    最后,祝大家学习愉快。

  • ?

    EXCEL2007 vba编程入门(实例对话框)

    海伦娜

    展开

    1、新建EXCEL2007空白表格。xlsx格式的,将VBA工具栏调出。如图1.1

    2、点击“开发工具”然后单击插入,在下拉的菜单的表单控件里面选择“按钮”,如图2.1

    3、画个方框,会弹出一个对话框“指定宏”,单击"新建"按钮,这样就会进入后台的程序书写界面,进入以后,程序的头和尾已经帮你写好了,如图3.1,你只需要在中间写入一句程序“ MsgBox("hello world") ”。

    4、为了保证宏正常运行,要在EXCEL的设置中进行启用宏操作。在“开发工具-宏安全性-宏设置:启用所有宏和勾选信任对VBA工程对象模型的访问”。如图4.1

    5、最后点击另存为“启用宏的工作簿”的xlsm文件,然后退出程序界面。

  • ?

    小白也能看懂的Excel VBA入门教程(一)

    苏耷

    展开

    什么是VBA

    Visual Basic for Applications(VBA)是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。简单来说VBA是建立在Office中的一种应用程序开发工具,其实知道这也就够了。

    第一个VBA程序

    首先要把开发工具调出来,Excel默认情况下是不显示开发工具的

    打开vb编辑器,新建模块,并写入代码

    Sub test()Range("A1") = "Hello World" '在A1单元格中填写Hello WorldRange("A2") = "我的第一个VBA程序"End Sub

    在Excel VBA中,Range对象可能是最常用的对象,Range对象可以是某一单元格、某一单元格区域、某一行、某一列、或者是多个连续或非连续的区域组成的区域。代码中 Range("A1") 就代表A1单元格。而“=”是一个赋值运算符,将右边的值传给左边的变量。

    大家学会了吗,其实VBA还是比较简单的。小编准备写一个VBA入门的教程,现在有两种思路,一种是先讲解VB的基本知识,然后在从例子中不断加深理解,这样前期可能相对比较枯燥;另一种是每篇介绍一个例子,讲解一下如何用VBA来解决,从实战中学习,相对来说比较快一点。大家觉得那种更好一点呢,或者有更好的方法,欢迎在下方评论,小编一定会及时回复。。

excelvba入门

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

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

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP