中企动力 > 商学院 > excel编程vba
  • ?

    在编程语言排行中找不见它,VBA编程语言

    屈夜安

    展开

    Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。也可说是一种应用程序视觉化的Basic Script。 1994年发行的Excel 5.0版本中,即具备了VBA的宏功能。

    VBA是Excel,Word,PowerPoint等办公应用程序理解的语言。

    VBA是一种功能强大的内置编程语言,允许您在Excel电子表格中编写自己的函数或命令。

    VBA是经典Visual Basic的最后一个前哨,它非常适合快速轻松地完成工作。不擅长的是构建大而复杂的应用程序。

    具有控制作用的函数

    IIf(条件式,表达式1,表达式2)Switch(条件式1,表达式1,[条件式2,表达式2[,...,条件式n,表达式n]])Choose(索引式,选项1[,选项2,...[,选项n]]) '这是基于1的索引

    VBA和VB的区别对比

    本文讲的不是开发语言VB,而是excel的编程语言。区别包括如下几个方面:

    1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL等)自动化

    2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.

    3. 要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的”父”应用程序,例如EXCEL.

    VBA的优点

    如果不是专业搞开发的,学习VBA以后。绝大多数企业和你所在的部门都会用到excel,都需要处理数据。你绝对是你们公司或者部门的宝贝。VBA的优势如下:

    开发环境搭建简单,只需要打开装机自带的Office,然后按下Alt+F11就自动进入编程和执行环境;上手简单,学习曲线很平缓,甚至可以更简单的通过录制宏来解决写程序的问题,只需要在简单的代码基础上修修补补就可以执行。与办公环境完美兼容,在Excel/Word/Powerpoint/Outlook/Access之间随便穿梭,比胶水语言还要简单易用分享性和移植性很强,几乎所有测试通过的程序放到别的机器上也可轻易执行。

    本文参考

    9ima

    i-programmer

    wikipedia

    zhihu

  • ?

    如果你是学习Excel的朋友,对VBA这个应该概念不陌生吧?

    情剩

    展开

    我们应该都知道Excel VBA的功能比较强大,但是对于刚开始学习的我们来说,面对那一串串英文代码,你是不是看得头昏脑胀?想去学习,然和茫然久久不能找不到学习入口?

    在这里,和大家分享自己的学习经验,和大家一起学习,共同进步。对了,还要告诉大家,我也是初学者,不是高手,如果有什么说得不对的,希望大家及时指出。我的目的并不是教学,而是期望创造一个学习Excel VBA的氛围! 记住一个共同的目标——掀开那层神秘的面纱,看看VBA的真实面目。

    首先我们要学习什么是VBA?就的先去了解他的真实面貌,VBA是Visual Basic For Application的简称,具体说来,可能让几天几夜也都说不完,你应该也知道VBA是建立在Office中的一种应用程序开发工具,其实知道这也就够了。

    Excel本身的内置函数其实已经很强大了,甚至有人说,只要学会二三十个函数,就已经可以满足普通用户日常的工作需求。那我们为什么要学VBA?

    是的,如果只需要满足一些普通的工作需求可能永远也不会用到VBA,但在实际应用的过程中,人们的操作却越来越大,需要也越来越高,这时候就需要用VBA来对Excel进行二次开发了,VBA可以有效地自定义和扩展Excel的功能。但有一点想要告诉大家,VBA功能很强大,但并不是万能的,也并不是所有工作都需要用VBA来解决,也并不是所有工作用VBA来解决都会很简单,这要根据实际情况而定,有些工作你用VBA来解决的话相反会变得很麻烦。

    换一种语言表达出来说VBA不是一种程序语言吧, 不公平, 它的确提供了程序语言能完成的功能; 说它是吧, 和现代程序语言相比功能又很不完整。说它不是面向对象的语言吧, 它有类模块, 提供部分类的功能; 说它是面向对象的吧, 类的最只要的特点又不具备。当然了,这些主要都是从VB6继承过来 的"遗传病"。所以通常的结论:"基于对象, 但非面向对象"。MS早就停止VB6的升级了, MS对VB6的放弃直接导致了VBA的功能不会在本质上变得更加强大, 但未尝不是一件好事,作为使用者不用整天跟着屁股后面学习新的功能。事物发展就是这样的,在解决了一个问题的同时又带来另一个新问题。

    设计VBA就是面向"终级用户"类似于数据透视表的"office 高级应用工具", 以脚本的形式存在, 用来达到"自动化驱动office来完成规律性, 重复性任务"的目的。严格来讲VBA不是为了"开发"而是为了"应用", 并不是说完全做不到二次开发, 但和 MS 设计 VBA 的本意不相符甚至是背离。更加不是"无所不能"的程序语言,有太多的事是 VBA 实现不了的,严格来说它都不是一种程序开发语言,只能算作脚本。他和API函数结合可以做到,很多VBA不能完成的事情。

    PS:API函数当然有用,开发图形库必须用它!

    我们下面说说VBA的优缺点:

    1:作为程序语言和其他开发语言比较,VBA的特点:

    (1)"天然"强大的输入输出平台,Excel的控件功能非常强大

    (2)使用便捷,无需搭建任何环境,随时可以用,无需保存,编译,即可运行;代码数据一体化(同时也是"缺点"),发布简单,无需运行环境。

    (3)简单易懂,门槛低,学习周期短

    2:VBA的"缺点"

    (1)不好封装

    (2)需要宿主解释器的解析,所以速度慢

    (3)安全性差

    (4)无法提供面向对象的结构式编程方式

    (5)单线程

    PS:上述"缺点"基本上是脚本语言具有普遍性的"通病",显然VBA就不是针对完成上述功能而设计的。VBA最大的缺点明明就是不能在windows以外的平台使用,像Mac上的Excel,虽然有vba,但是基本只能发挥30%不到的功能,字典这种需要调用windows系统里面功能的东西就没法用了,包括正则表达式,调数据库、fso文件之类的东东。

    新手学习的几点建议

    1:调试 地方窗口,立即窗口,观察窗口,F1(帮助),F2(属性方法),F8(分步执行)途中诊断:断点,stop等等。

    2:分拆 语句分拆长而难懂的句子分拆成基本单元,利用调试功能一个个解决,很容易就理解了它的含义。

    3:耐心 学习目的明确≠急于求成。学习的进程总是遵循渐进式的规律,跳跃式的一夜暴富只能是空中楼阁,所以耐心在学习过程中就显得尤为重要。

    我们每次如果要开始写程序,首先先想下正常处理数据的过程,然后在转换成vba数据处理的过程,仅此而已。每次用到的Excel VBA无非就是以下几种方法:

    (1)对象的使用方法,当我不知道代码怎么去写的时候,我们知道录制宏就可以,然后可以调用Excel内置应用;

    (2)程序语法类:循环,判断,字符串,文件操作等;

    (3)数据处理的方式,数组,字典

    (4)界面,系统等等;这个用的比较少。

    (5)类模块;

    学会了循环,判断,字典,能应用到日常工作中,将繁琐重复的部分交给电脑,就没继续深入研究了,因为够用就好学以致用最重要,会的再多用不到也是白搭,一个人精力有限不可能所有东西都学会。

    另外需要说的一点是,其实VBA效率不算高,复杂程度不算低,总体给人感觉一般。但是任何一个工具只要熟练了,那就是你最好的工具。相信,实践,理解,这可谓是工具认知的一条康庄大道。

    我们学习Excel VBA的内容充其量内容就这么多了, 学习VBA是可以有止境的, 差不多的时候是完全可以收手的, 就算这些内容也完全不用全部学会, 够用就可以收手。写这个程序,其实最主要的是思考如何用程序语言去完成,因为VBA其实操作方法和语句不多,知道如何操作了,就知道如何去写代码。另外送一句话给我们的初学者,看书上的代码再多,再简单,也要自己尝试去写。我们不怕遇到错误,就怕你不敢去迈出那一步。只要你迈出了前进的那一步,你坚持下去了,就会发现胜利终究会属于你的。

    用一句话来总结:"程序的本质是用机器来解放劳动力,而不是用劳动力解放机器!"

    唯有不断学习,才能不被淘汰!

  • ?

    VBA实在太强大,太方便了!学会了之后,工作效率快好几倍

    炊烟

    展开

    一年前我毕业工作,以为Excel只是复制粘贴,调整格式。

    机缘巧合工作恰好是要用到VBA,仿照同事的代码只会写最基本的Function语句:IF...Else...

    四个月前注册账号,那会几乎什么都不懂。虽然写了几个月的Function,但是Sub是毛都不知道,还有就是我也算是0基础。

    四个月(中间两个月去炒股了,想想都后悔。。。),学会的也只是用数组,字典的部分用法。还有部分杂七杂八的东西,有些囫囵吞枣了。

    好歹自己整理了一个大大的文件夹,各种代码都有。脑子里有了一些底子了,算是迈出了第一步。

    VBA的很多部分,特别是数组和字典,还是很容易接受的。VBA数组,我是和函数数组相互印证学习的,感觉比函数数组简单。字典,对我来说,就是高级版的VLOOKUP,所以学习起来没有太多困难。而学会了字典,等于完全掌握了一个对象的学习过程,再学其它的,变得容易很多。。所以可能学习VBA就是要有一个敲门砖,这个砖找对了,门一下子敲开了,路就好走很多。希望你能找到自己的砖。

    只会不是很难的函数。其他的都不懂。听说VBA是学不完的,所以想学到一般的程度。以下几点送给你初学的你

    1:调试

    经常看到新手学习了很长时间的VBA之后仍然不会使用调试功能, 一遇到问题马上就请教他人, 这样不利于自身的成长。调试非常重要, 是学习代码本身

    不可或却的一部分。是诊断, 梳理代码逻辑的过程, 可以避免逻辑错误的重复性发生。善用调试新手很多的问题都可以得到解决, 即可摆脱对他人的依赖性,

    自身又得到长足的进步, 一举两得。

    三个窗口, 三个功能键:

    地方窗口, 立即窗口, 观察窗口, F1(帮助), F2(属性方法), F8(分步执行)

    途中诊断:

    断点, stop 等等。

    2: 分拆

    (1)语句分拆

    长而难懂的句子分拆成基本单元, 利用调试功能一个个解决, 很容易就理解了它的含义。

    如: intRow = Range("A" & Rows.Count).end(xlup).row

    立即窗口: ?Rows.Count

    Range("A" & Rows.Count).Select

    Range("A" & Rows.Count).End(xlup).Select

    ?Range("A" & Rows.Count).End(xlup).row

    用眼睛都可以看到每一步Excel选中的哪个单元格, 那么自然就不难理解了。这个小范例同时揭示了学习程序过程中一个非常重要的方面: 动手尝试。

    (2)子程序分拆

    把一个冗长的程序按照功能拆分成一个个相对独立的子程序来调用, 使得程序具有一定程度的组织性,结构性,规整性大大提高了代码的可维护性,扩展性,

    重用性。这是贯穿程序语言发展的一条主线, 因为它直接指向了程序开发的终极目的之一:开发效率。

    3: 耐心

    学习目的明确 ≠ 急于求成。无论学习目的如何直接和明确, 学习的过程仍然不是一蹴而就的, "捷径"只能是建立在扎实的阶梯式基础上。

    有些新手基本代码还没写利落就开始用界面写"系统", 甚至还没学会调试, 结果是步履维艰, 一步一问, 三步一错, 无以为继。还有的朋友

    学习VBA是为了研究彩票, 还没学习一星期就开始写各种计算方法, 自然处处遇"难", 大挫学习兴趣, 随之放弃。抱着明确的目的学习是好事,

    不管目的是否"明智"(这是另外一个话题), 但明确的目的不等于"急功近利"。学习的进程总是遵循渐进式的规律, 跳跃式的一夜暴富只能是空中楼阁,

    VBA的优缺点是和其设计定位紧密联系的, 是相对于其它对比对象而存在的。抛开定位在其适用范围之外与其它开发语言比较来谈VBA的"缺点", 这种比较本身就是有失偏颇的, 因为它就不是为了开发而设计的,所以也就无所谓什么"缺点"了。

    同样, 基于设计出发点的用途和功能也就不能称之为"优点"了,本身就是干这个用的,又何来优点?但这些的确可以作为VBA的特点。听起来比较混淆,就用2个单词作为标记更容易区分些: Advantage, Feature。其实称谓不重要,也没必要较真分的那么清。重要的是和定位联系起来看待VBA的存在及其特点。

    1:作为程序语言和其他开发语言比较,VBA的特点:

    (1)"天然"强大的输入输出平台

    对着"大黑框框"学程序一学就是几年,太没成就感了,什么样的控件能有Excel强大呀。

    (2)使用便捷

    无需搭建任何环境, IDE,调试器(debugger)齐全;

    Office装机量大,VBA到哪儿基本都可以拿出来用,就像哪部电脑都有浏览器一样,JavaScript随时可以用;

    无需保存,编译,即可运行;代码数据一体化(同时也是"缺点"),发布简单,无需运行环境。

    与其它自动化操纵Office的方式相比, 与COM交互更加容易便捷。

    (3)简单易懂,门槛低,学习周期短

    为了完整性,还是罗列出一些所谓的"缺点"

    2:VBA的"缺点"

    (1)不好封装

    (2)需要宿主解释器的解析,所以速度慢

    (3)安全性差

    (4)无法提供面向对象的结构式编程方式

    (5)单线程

    (6)................................

    概括起来基本上涉及底层,大型应用的方面根本做不到,较为复杂点的应用系统在与数据库结合后并非不能做到,但仍不适合。

    上述"缺点"基本上是脚本语言具有普遍性的"通病", 显然VBA就不是针对完成上述功能而设计的。但相对于寄生于Office的脚本来言,

    VBA是唯一的存在(VSTO不是这样的方式),独此一份没有可以比较的对象,所以优点就无从谈起。

    希望你能找到自己的砖。我还是觉得,VBA和函数一样,多学多练才是王道,杀贴一万,做不了统帅,也能做大将军了。

    1、买本书

    2、看些视频教程,比如网上的 教程 ,视频吃透前面几十集就行了,完全能够满足工作了

    3、最重要的就是多写,多练,多尝试,多F1看帮助文件,推荐用office2010,之后的不带本地帮助文件了,犯错误多了理解记忆的就深刻,Just do it!

    我还是觉得,VBA和函数一样,多学多练才是王道,杀贴一万,做不了统帅,也能做大将军了。

  • ?

    Excel学习之VBA(一)

    邢灵松

    展开

    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中新增了一个模块

  • ?

    其实我想说,Excel VBA学习的最快方法就是借鉴,没有之一

    Faith

    展开

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

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

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

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

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

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

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

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

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

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

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

    最后,祝大家学习愉快。

  • ?

    最强办公技巧|不用Excel函数、不用VBA编程,照样实现办公自动化

    赖道天

    展开

    对于很多职场人士而言,Excel或者WPS表格就是他们每天最常用的办公软件了。

    比如,HR用Excel来制作员工入职填写表单,设计好填写范例,需要填写姓名、性别、岗位、银行卡号、身份证号码等等,就如下图。

    对于有经验、熟悉Excel操作的人事专员来说,制作这样的一张表单当然不是什么难题。可往往难题又出现在这样一张用Excel制作的表单中。

    比如说员工填少或填多了身份证号码、银行卡号等,就会给后续工作带来麻烦,也就只能再一次找员工去核对了。

    又或者员工在填写的时候不小心误操作,变动了格式,在汇总的时候麻烦多多。

    可是如果这个表单可以自动核查甚至锁定格式、设置修改权限的话,自动提醒填多或填少、限制改格式,那就能大大减少这种情况带来的麻烦了。

    机灵的人事专员可能马上行动,去查如何实现这种Excel自动核查、锁定填写格式、设定权限等功能了。

    可一查,教程说的方法不是需要填很多的函数公式,就是要VBA编程。函数公式还好解决,但是VBA编程那一行行的代码就实际无法看懂了。

    那怎么办?当然不是凉拌啦,我们可以使用无需编程的开发平台去制作一个人事管理软件,给这个软件设置权限、限定填写格式、自动核查,员工填写完成后不用再通过邮件发送给人事专员,而是在软件里自动接收到填写好的表单。

    云表是一个无需编程就能开发管理软件的免费平台,以下就用云表简单说明怎样开发一个人事管理软件的。

    云表的开发界面类似于Excel,操作起来像Excel一样简单,可以随意合并表格涂色等,能把表单设计得很漂亮。

    可以设计一个员工入职填写表单,通过设置修改权限后,便只有人事专员能改动表单的格式。同时给每个填写框,比如填写银行卡号的框,设置成数字填写并固定多少个数字,就可以自动检查错误了。

    除了这些小功能以外,还可以运用业务公式,也就是用工作上的业务逻辑去描述。比如汇总新入职的员工资料,只需要员工的姓名、岗位、联系方式。我们不再需要复制粘贴了,用云表的业务公式设定员工个人的资料表中这几项内容,点一个按钮就能自动填写到汇总表中去。这在常年招工的工厂人事管理中特别有用哦!

    其实云表可以实现的功能还有很多,可以做出完整的ERP管理软件、仓库管理软件、电商进销存软件等。

  • ?

    小白也能看懂的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来解决,从实战中学习,相对来说比较快一点。大家觉得那种更好一点呢,或者有更好的方法,欢迎在下方评论,小编一定会及时回复。。

  • ?

    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编程的小技巧

    屈函

    展开

    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

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

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

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP