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

    Excel VBA之自定义函数Function

    娇嗔

    展开

    =============================================================

    ====================

    || 版本号:Excel2013. ||

    VBA有两个基本过程,一个是Sub过程,一个是Function过程。

    其中Function过程就是自定义函数,本篇就来介绍它

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    自定义函数的基本语法

    Function也是保存在模块中

    如下:

    注:(1)带[]号的都是可选内容。第一行最后的As语句表示指定函数返回的数据类型。

    (2)如果想强制退出函数过程,则在需要位置加上语句 Exit Function

    (3)最后必须把过程计算的结果返回给函数名称。

    (4)使用自定义的Function与使用Excel已有的函数是一样的。但是要注意,私有的函数是

    不会出现在“插入函数”对话框里的。

    举一个例子,计算特定单元格区域背景颜色为黄色的单元格数目,该函数如下:

    注意:这个函数需要你传入所要计算的单元格区域

    设定自定义函数为易失性函数

    有时当工作表重新计算时,自定义的函数并不会重新计算。此时我们要手工将自定义的Function

    设定为易失性函数就可以了。设定也很简单,值需要在函数开始的第一句写上如下代码即可:

    注意:当表格改变时,易失性函数也会重新计算。但是想单元格背景色的改变不会导致表格重新计算,

    因此易失性函数也不会重新计算。

  • ?

    运用VBA中Interior.ColorIndex方法,打造五彩缤纷的EXCEL

    应凝丝

    展开

    在EXCEL的操作中经常会用到颜色的提示,如何会实现自动显示颜色呢,可不可以实现呢?当然可以,在VBA界中,有着颜色的对照表,如图一所示,这个值是通过单元格的Interior.ColorIndex属性来实现的。值和显示的颜色是一一对应的,如4就是那种绿色,5就是那种蓝色等等

    图1

    下面就讲解在EXCEL中如何通过VBA来实颜色显示的自动控制。

    步骤1:在ECCEL中,点击“ALT+F11”进入宏编辑界面,点插入》》模块,进入宏编辑界面:

    录入代码:

    Sub YS()

    Sheets("SHEET1").Select

    For i = 1 To 3

    For t = 1 To 19

    Cells(t, i).Select

    Cells(t, i).Interior.ColorIndex = 19 * (i - 1) + t - 1

    Next

    Next

    MsgBox ("ok!")

    End Sub

    下面是代码录入后的截图:

    T2

    步骤2 在工作表sheet1中,画个圆,右键连上上面的”YS”宏:

    T3

    步骤3. 点击圆按钮,查看效果:

    T4

    非常的漂亮,和图1一样,这就是VBA中利用Interior.ColorIndex方法的简单介绍,实际工作中还有很灵活的用法,如当单元格出现负值时显示什么颜色,都可以参考上述的代码和颜色值。

    分享成果,随喜正能量。

  • ?

    重大改变!Python 或将取代 VBA 成为 Excel 官方脚本语言

    诸依波

    展开

    点击上方“ CSDN ”,选择“置顶公众号”

    关键时刻,第一时间送达!

    如果微软的 Excel 中支持了人生苦短的 Python,你还会喜欢那个直接且易上手的 VBA 编程吗?

    近日,据国外媒体 BLEEPINGCOMPUTER 报道,微软正考虑添加 Python 为官方的一种 Excel 脚本语言,如果获得批准,Excel 用户将能够像目前使用 VBA 脚本一样,使用 Python 脚本与 Excel 文档、数据以及一些 Excel 核心函数进行交互。

    VBA vs. Python:各有千秋

    Visual Basic for Applications(VBA)是 Visual Basic 的一种宏语言,于 1993 年由微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言,主要能用来扩展 Windows 的应用程序功能,特别是 Microsoft Office 软件,也可说是一种应用程式视觉化的 Basic 脚本。我们在 Excel 中可以用 VBA 编程解决很多批处理操作问题,因为 VBA 是 Excel 的原生脚本语言,同时也更接近自然语言,易于上手,所以在便利性上有着得天独厚的优势。

    与此同时,除了 VBA,还有很多脚本语言可以来操作 Excel,Python 就是其中一种。

    对于 Python,是当今可用的最通用的编程语言之一。它在 PYPL 编程语言中排名第二、RedMonk 编程语言排名第三、TIOBE 编程语言中位列第四,受到了诸多开发者的喜爱。在 Excel 中,相比 VBA ,Python 的应用范围更加广泛、代码更加整洁、更简单一些,但是需要独立安装,稍显复杂。

    微软的决策

    关于 Excel 功能的话题,很多用户多次提议让 Python 成为 Excel 中的一种脚本语言,不仅可以作为 VBA 的替代品,而且也可以作为字段函数(= SUM(A1:A2))的替代方案。

    上个月,微软做出回应,发起了一个投票来收集更多的用户反馈信息,并调查用户想要如何在 Excel 中使用 Python,该提议得到了众多用户的支持,得票支持率高于排名第二的提议的两倍。

    不过也有用户认为,如果微软走这条路线,那么为便于日常使用,微软也需要在所有其他 Office 应用中支持 Python 。

    你会如何选择?

    从近几个月编程语言排行榜来看,VBA 也处于逐渐下滑的状态,我们不禁感叹“VBA 是否已经过时?”,对此,有很多人反驳道,“只要 Office 还流行,VBA 就不会过时”,但是现在如果微软都支持了 Python,VBA 还能坚持多久呢?由此,不少网友表示:

    赶紧替换 VBA,Python 好用多了;

    如果替换了,是用 Python 2 还是 Python 3 呢?

    VBA 还是很简单的;

    感觉还是 Lua 好,比 Python 更简单,上手快。

    而你怎么看呢?欢迎在留言中分享。

    AI 全面入侵,程序员到了 2040 年还能继续敲代码吗?

  • ?

    EXCEL提示“不同的单元格格式太多”的苦果,利用VBA彻底解决!

    LAbbe

    展开

    今日也是应读者的需求利用VBA解决实际问题。学而不用则殆!学习了新的知识就是要不断的利用,提升,再利用再提升。所以要给这位提问题的朋友点赞!

    有的读者问:如何利用VBA来解决Excel提示不同的单元格格式太多的问题呢?

    首先,我们先分析一下这个情况是什么时候发生,一般有几种情况会发生这类问题。

    1复制粘贴时,这时会提示单元格格式太多,无法粘贴,而且要经过长时间的不知在做什么的处理过程,然后,EXCEL崩溃。你只能重启。

    2在移动工作表时,将工作表整体从一个文件转移到另一个工作表时,也会出现这个问题,现象和上述一样。

    3 在筛选数据时,有时候,在筛选一个值时,往往会出现上述的提示,当你按确认键后,EXCEL会再次计算,好在不会崩溃,只是时间非常长,这种情况往往出现在这个工作表的数据量巨大,往往是1万行以上的数据。

    然后,我们分析一下上述问题产生的原因。其实这类问题的产生不是用户的错,而是OFFICE系统,或者说,EXCEL从03版升级到07版之后,带给用户的 一个遗留问题,他们潇洒的升级完了,但留下了一堆苦果让用户去慢慢品尝。为什么这么说呢?一点也不过分!03版和07版不兼容就是罪魁祸首。在07版加入了很多全新的内容,这些在03版及低版本无法显示,才出现了上述的问题。

    所以,当你用07版本打开03版本;或者03版打开07版本(有兼容包);或者是往03版本拷贝07版本数据;或者是往07版本拷贝入03版本数据时,极易发生上述问题。如果一个工作表的数据既有03版本的又有07版本的,那么你非常的不走运,在你筛选时,很可能就是这个苦果。

    问题的原因分析完了,那么怎么解决呢?

    办法一:在工作表中刷格式,采用一个格式全部的刷一遍,但也不能很好的解决问题。

    办法二:新建一个工作表,把原数据数值粘贴到新的工作表中,原来的格式全然没有了。

    办法三:就是今天我们重点讲的VBA方法:

    拷入下面的代码:

    Sub KK()

    2 Dim s As Style

    3 Application.ScreenUpdating = False

    4 On Error Resume Next

    5 For Each s In ThisWorkbook.Styles

    6 If Not s.BuiltIn Then s.Delete

    7 Next

    8 Application.ScreenUpdating = True

    9 MsgBox ("OK")

    10 End Sub

    很简单的几行代码,往往能解决很大的问题。代码讲解:

    (1)Application.ScreenUpdating = False

    Application.ScreenUpdating = True

    上述语句是成对出现的,前者是关闭屏幕更新,以提高程序的效率;后者是打开屏幕刷新,

    (2)On Error Resume Next

    忽略错误,继续执行

    (3)第五行和第七行构成了一个FOR NEXT语句,此语句在之前的文章中讲过,不过这里用的是For Each s In ThisWorkbook.Styles,翻译过来就是说对于这个工作表中所有的格式将进行的操作,什么操作呢?就是:

    If Not s.BuiltIn Then s.Delete 执行到这里,所有的自定义格式全部被删除掉了。

    (4)最后全部执行完成弹出对话框:MsgBox ("OK")

    看我们的代码截图:

    剩余的工作就是,画个按钮,连锁上述代码,就可以了,经测试,这个方法还是可行的,如有遇到这个问题的读者可以试试看啊。

    今日技巧提示:

    1 Application.ScreenUpdating = False;Application.ScreenUpdating = True

    的作用是什么?能否单独出现?

    2. On Error Resume Next 作用是什么?

    3,For each next 语句是否理解呢?

    分享成果,随喜正能量

  • ?

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

    武烨磊

    展开

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

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

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

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

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

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

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

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

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

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

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

    最后,祝大家学习愉快。

  • ?

    利用了VBA神器,多工作表的大数据搜索,真的非常简单

    情须断

    展开

    最近两周一直在讲解如何利用VBA,在EXCEL的多个工作表中进行大数据的查询。今天把两周的内容精炼总结一下,想利用这些程序的朋友,可以拷贝下面的代码,放在编译器中就可以直接使用啦。

    1 Sub KK()

    2 Sheets("SHEET1").Select

    3 I = 2

    4 Do WhileCells(I, 1) <>""

    5 Cells(I,1).Select

    6 TT =Cells(I, 1)

    7 Cells(I, 2) = ""

    8

    9 SetFJX =Sheets("A").Range("A1:A"&Sheets("A").Range("A1").End(xlDown).Row).Find(TT,AFTER:=[A1],LOOKAT:=xlWhole)

    10 If NotFJXIs Nothing Then Cells(I, 2) = Sheets("A").Cells(FJX.Row, 2)

    11

    12 SetFJX =Sheets("B").Range("A1:A" &Sheets("B").Range("A1").End(xlDown).Row).Find(TT,AFTER:=[A1],LOOKAT:=xlWhole)

    13 If Not FJXIs Nothing Then Cells(I, 2) =Sheets("B").Cells(FJX.Row, 2)

    14

    15 SetFJX =Sheets("C").Range("A1:A"&Sheets("C").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)

    16 If Not FJXIs Nothing Then Cells(I, 2) =Sheets("C").Cells(FJX.Row, 2)

    17

    18 Set FJX=Sheets("D").Range("A1:A" &Sheets("D").Range("A1").End(xlDown).Row).Find(TT,AFTER:=[A1],LOOKAT:=xlWhole)

    19 If Not FJXIs Nothing Then Cells(I, 2) =Sheets("D").Cells(FJX.Row, 2)

    20 I = I + 1

    21 Set FJX =Nothing

    22 Loop

    23End Sub

    代码截图:

    工作表截图:注意名称

    下面对代码进行逐行讲解:

    1 Sub KK() ’KK给出程序的名称

    2 Sheets("SHEET1").Select ’指选择sheet1的工作表,并进行操作

    3 I = 2 ’是对变量i赋初始值,一般要用Dim i as Integer 进行声明。这里可以仅用Dim i, 也可以再简单点,直接用也行。但这不是说Vba是动态语言,相反,这恰恰说明了VBA作为静态语言的灵活性。

    4 Do While Cells(I, 1) <> "" ’DOWHILE是一个循环,是循环的标识,回调语句是loop,WHILE跟循环条件,是指第i行第一个单元格不为空建立一个循环。 变量是i,条件是直到i行的第一个单元格是空值。

    5 Cells(I, 1).Select ’要对第I行一个单元格定位,这也是为了程序具有可视性。

    6 TT = Cells(I, 1) ’然后把它的值value取出赋給TT,这也是为了以后操作简单。这里TT也是直接用的,略去了声明语句。

    7 Cells(I, 2) ="" ’要把第2个单元格清空,两个半角双引号,中间什么也没有就是空值,和空格不同,空格是" "。

    8

    9Set FJX=Sheets("A").Range("A1:A"&Sheets("A").Range("A1").End(xlDown).Row).Find(TT,AFTER:=[A1],LOOKAT:=xlWhole)

    ’SET是令FJX等于一个值,(这里也应先给FJX 事先声明此程序略去了),

    sheets("A")是指名称为A的那个工作表;

    Range("A1:A"& Sheets("A").Range("A1").End(xlDown).Row)是指从A1单元格开始向下直到最后一个不为空的单元格区域;

    Sheets("A").Range("A1:A"& Sheets("A").Range("A1").End(xlDown).Row)是指A的工作表中在A1到最后一个不为空的单元格区域;

    Find(TT,AFTER:=[A1], LOOKAT:=xlWhole)要查找值为TT的单元格,在A1的after后开始查询,是完全匹配,把区域和之后的操作间隔一个。

    这样就把查找的结果赋给了FJX。

    10 If Not FJXIs Nothing Then Cells(I, 2) = Sheets("A").Cells(FJX.Row, 2)

    ’if then 语句, 如果...那么......。查询的结果放在FJX,FJX is Nothing就是说没有查到结果。给它一个逻辑否定,就是前面加个NOT,其意思就是FJX不为Nothing 就是查到了,查到了怎么办?fjx.Row是指查到数据的行号。Sheets("A").Cells(FJX.Row,2)就是在A工作表查到的行号的第2个单元格的值,Cells(I, 2) = Sheets("A")。Cells(FJX.Row, 2)即第i行第2个单元格的值将等于工作表A中查到的行号的第2个单元格的值 Cells(I, 2) 是哪个工作表呢?指Sheets("SHEET1")。

    11

    12 SetFJX =Sheets("B").Range("A1:A"&Sheets("A").Range("A1").End(xlDown).Row).Find(TT,AFTER:=[A1],LOOKAT:=xlWhole)

    13 If Not FJX Is Nothing Then Cells(I, 2)=Sheets("B").Cells(FJX.Row, 2)’这两行类似于第9第10行,是处理当在B工作表中继续查找的操作。当查到后会有第13行的操作,和第10行的操作一样,这里要注意:第一,xlwhole是指单元格完全匹配的查找。第二,连接字符串的符号是&,不可用加号,当用到.cells时前面要用With,现在还没有用到,以后会有。

    14

    15 SetFJX =Sheets("C").Range("A1:A"&Sheets("C").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)

    16 If Not FJXIs Nothing Then Cells(I, 2) =Sheets("C").Cells(FJX.Row, 2)

    ’15行和16 行是在工作表“C”中进行的查找,也就是说:首先在工作表“A”中查找,然后就在“B”中查找,再次在"C"中查找。一旦查找到就执行将此行的第二个单元格的VALUE赋给 Sheets("SHEET1")的工作表的I行第二个单元格值,这样就实现了在多个工作表中的查询。

    17

    18 Set FJX=Sheets("D").Range("A1:A" &Sheets("D").Range("A1").End(xlDown).Row).Find(TT,AFTER:=[A1],LOOKAT:=xlWhole)

    19If Not FJX Is Nothing Then Cells(I, 2)=Sheets("D").Cells(FJX.Row, 2)

    ’18行和19 行是执行工作表D的查找。回顾一下,从第9行开始直到第19行总共运行了4个工作表

    20I = I + 1 ’I值增加1

    2121 Set FJX = Nothing ’另FJX为空准备下轮的查找

    22 Loop ’程序回调到第4行 DO WHILE

    23 End Sub ’程序结束。

    有兴趣的朋友可以试着使用一下,如果好用别忘了分享。如果有改进,别忘了晒晒代码。

    分享成果,随喜正能量

  • ?

    python操作Excel,相比VBA你更喜欢哪个

    Evan

    展开

    大家都知道在excel中用VBA代码可以解决很多批处理操作问题,因为VBA是excel原生脚本语言,所以在便利性上有着得天独厚的优势,只要你电脑有excel,那么就可以立刻使用这个VBA脚本代码来解决问题。其实除了vba还有很多脚本语言可以来操作excel,比如python脚本。

    python跟vba一样都是脚本类语言,只不过python的用途更广些,而且代码好看些。由于是独立的程序,需要单独安装,这个有些麻烦,除此之外,如果你掌握好了相关的知识之后完全可以用他来任意处理excel文档。

    下面说一下在windows系统上,如何使用python来连接操作excel文档。

    首先要从python官网下载python主程序,安装好后,然后下载连接excel的接口模块程序pywin32,进行安装,2个步骤完成之后,就可以打开python shell界面,进行代码输入了。我这里使用的python版本是2.7,这个看自己的习惯喜好了。

    python excel

    小实例:在d盘的test.xls文档单元格A1中输入内容

    >>> import win32com.client #加载pywin32模块

    >>> xl=win32com.client.Dispatch("Excel.Application") #建立连接EXCEL程序的对象xl

    >>> book=xl.Workbooks.Open("d:\\test.xls") #用xl打开d盘下的test.xls工作簿

    >>> book.worksheets(1).cells(1,1).Value="输入的内容" #在工作簿的第一个表格第一个单元格输入内容

    >>> book.Save() #保存工作簿

    >>> book.Close() #关闭工作簿

    python excel

    请点击此处输入图片描述

    一步一步运行完之后(当然也可以保存成脚本文件运行),用鼠标打开d盘下的test.xls文件,就可以看到刚刚输入的内容了。

    python excel

    请点击此处输入图片描述

  • ?

    EXCEL VBA工作表操作全能方法小结

    於正豪

    展开

    [ 01]增加工作表(Add方法)

    Sub AddWorksheet()

    MsgBox "在当前工作簿中添加一个工作表"

    Worksheets.Add

    MsgBox "在当前工作簿中的工作表sheet2之前添加一个工作表"

    Worksheets.Add before:=Worksheets("sheet2")

    MsgBox "在当前工作簿中的工作表sheet2之后添加一个工作表"

    Worksheets.Add after:=Worksheets("sheet2")

    MsgBox "在当前工作簿中添加3个工作表"

    Worksheets.Add Count:=3

    End Sub

    示例说明:Add方法带有4个可选的参数,其中参数Before和参数After指定所增加的工作表的位置,但两个参数只能选一;参数Count用来指定增加的工作表数目。

    --------------------------------------------------------------------------------

    [ 02]复制工作表(Copy方法)

    Sub CopyWorksheet()

    MsgBox "在当前工作簿中复制工作表sheet1并将所复制的工作表放在工作表sheet2之前"

    Worksheets("sheet1").Copy Before:=Worksheets("sheet2")

    MsgBox "在当前工作簿中复制工作表sheet2并将所复制的工作表放在工作表sheet3之后"

    Worksheets("sheet2").Copy After:=Worksheets("sheet3")

    示例说明:Copy方法带有2个可选的参数,即参数Before和参数After,在使用时两个参数只参选一。

    [ 03]移动工作表(Move方法)

    Sub MoveWorksheet()

    MsgBox "在当前工作簿中将工作表sheet3移至工作表sheet2之前"

    Worksheets("sheet3").Move Before:=Worksheets("sheet2")

    MsgBox "在当前工作簿中将工作表sheet1移至最后"

    Worksheets("sheet1").Move After:=Worksheets(Worksheets.Count)

    示例说明:Move方法与Copy方法的参数相同,作用也一样。

    [ 04]隐藏和显示工作表(Visible属性)

    [ 04-01]

    Sub testHide()

    MsgBox "第一次隐藏工作表sheet1"

    Worksheets("sheet1").Visible = False

    MsgBox "显示工作表sheet1"

    Worksheets("sheet1").Visible = True

    MsgBox "第二次隐藏工作表sheet1"

    Worksheets("sheet1").Visible = xlSheetHidden

    MsgBox "第三次隐藏工作表sheet1"

    Worksheets("sheet1").Visible = xlSheetVisible

    MsgBox "第四隐藏工作表sheet1"

    Worksheets("sheet1").Visible = xlSheetVeryHidden

    MsgBox "第五隐藏工作表sheet1"

    示例说明:本示例演示了隐藏和显示工作表的各种情形。其中,使用xlSheetVeryHidden常量来隐藏工作表,将不能通过选择工作表菜单栏中的“格式”——“工作表”——“取消隐藏”命令来取消隐藏。

    [ 05]

    Sub ShowAllSheets()

    MsgBox "使当前工作簿中的所有工作表都显示(即将隐藏的工作表也显示)"

    Dim ws As Worksheet

    For Each ws In Sheets

    ws.Visible = True

    Next ws

    [ 06]获取工作表数(Count属性)

    [ 05-01]

    Sub WorksheetNum()

    Dim i As Long

    i = Worksheets.Count

    MsgBox "当前工作簿的工作表数为:" & Chr(10) & i

  • ?

    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窗口。

  • ?

    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