精华内容
下载资源
问答
  • 循环语句是很多人开始使用VBA的理由,因为在批量处理大量数据的多条件判断时,函数已经没办法满足我们的需求了。而VBA可以使用简单的循环完成这一工作。循环语句1.For...Next语句在上一篇我们介绍判断语句的时候,就...

    循环语句是很多人开始使用VBA的理由,因为在批量处理大量数据的多条件判断时,函数已经没办法满足我们的需求了。而VBA可以使用简单的循环完成这一工作。

    循环语句

    3a005fd64dd16f6ac0c6c4e5a7b30155.gif

    1.

    For...Next语句

        在上一篇我们介绍判断语句的时候,就使用了For..Next的循环语句,在这里简单的讲一下。

    2c74823a6d510fee3eeb581236e68d39.png

    案例中循环语句的意义是,设置n=1到6的循环,每次循环分别在F2到F7单元格中输入判断值。For n = 1 to 6 :For是循环语句的开始,对于变量1等于1到6,从n=1开始进行下面的判断我们也可以设置循环的步长:For n = 1 to 6 step 2 ,也就是变量从1开始步长为2,在6结束的循环语句。Next,n=1的这一轮判断结束,进行n=2的下一轮判断。不过,For Next 语句有一个缺点,就是我们必须知道循环变量的终止值,如果我们的数据是动态的,就很难提前预知循环变量的终止值。这时,我们可以使用下面要介绍的Do While Loop 循环语句。

    2.

    Do...While...Loop语句

    作为循环语句的开始,当Do Whlie后面跟着的逻辑表达式为True时,进行循环,否则停止循环。

    下面的案例中,就是当D列的某个单元格不为空时,进行循环,当执行到Loop时,返回Do While进行判断,一定要注意结束循环的条件,否则这个语句很容易出现无限循环无法终止的问题。

    626221cd25b21890b5fe368883df004b.png

    3.

    Do...Until...Loop语句

    这个语句的用法与Do Whlie Loop语句正好相反,Do While语句是当逻辑表达式的值为False时退出循环,而Do Until 语句是当逻辑表达式的值为True时退出循环。

    2e75888887b115f249df174120d3b523.png

    4.

    For...Each...Next语句

    当我们明确要在一个数组里进行循环的时候,我们可以使用For Each Next语句,这个语句不需要定义循环条件。

    看一下下面的案例:

    dd2a7174238edaf9a33a571ead08169b.png

    定义m作为一个区域,对于单元格F2:F6中的每个单元格进行循环判断。

    END

    展开全文
  • 如果你是学习Excel的朋友,对VBA这个概念陌生吧?VBA的功能实在太强大,可初学的我们,面对那一串串尤如外星文的代码,你是不是看得头昏脑胀?想学,是不是却茫然得找到入口?在这里,我把我自己的学习心得和...

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

    VBA的功能实在太强大,可初学的我们,面对那一串串尤如外星文的代码,你是不是看得头昏脑胀?

    想学,是不是却茫然得找不到入口?
    在这里,我把我自己的学习心得和笔记放出来,和大家一起分享交流,一起学习,共同进步。

    对了,还要告诉大家,我也是初学者,不是高手,如果有什么说得不对的,希望大家及时指出。

    我的目的不是教学,而是期望创造一个有你,有我,有他的学习氛围!开始吧,记住一个共同的目标——掀开那层神秘的面纱,看看VBA的真实面目。

    什么是VBA?为什么要学习VBA?

    VBA是Visual Basic For Application的简称,具体说来,可能让叶枫三天三夜也说不完,叶枫也只知道VBA是建立在Office中的一种应用程序开发工具,其实知道这也就够了。很懒很笨的叶枫只想吃香喷喷的大米饭,可从没想要知道大米饭是怎么来的。
    Excel本身的内置函数其实已经很强大了,甚至有人说,只要学会二三十个函数,就已经可以满足普通用户日常的工作需求。     
    那我们为什么要学VBA?
    是的,如果只需要满足一些普通的工作需求可能永远也不会用到VBA,但在实际应用的过程中,人们的操作却越来越大,需要也越来越高,这时候就需要用VBA来对Excel进行二次开发了,VBA可以有效地自定义和扩展Excel的功能。
    但有一点叶枫想要告诉大家,VBA功能很强大,但并不是万能的,也并不是所有工作都需要用VBA来解决,也并不是所有工作用VBA来解决都会很简单,这要根据实际情况而定,有些工作你用VBA来解决的话相反会变得很麻烦。

    VBA与宏

    刚开始的内容听起来很枯燥,请大家不要分心,耐着性子看下去,兴趣总是慢慢积累的。1、亲自动手,录制一段属于自己的宏
    提到VBA,相信很多人想到的就是宏,但是VBA与宏是不是一回事?我觉得它们不是一回事,但这不重要,我们要做的是先来认识一下宏。
    宏是什么?
    我理解的宏是一系列固定动作的集合,这个集合当遇到让他执行的条件后就逐个执行。
    有人把我们录制的宏比喻成一个武术运动员在比赛中练就的一段武术套路动作,这个套路遇到一定的条件(比赛)就执行。
    好了,别闲着,动一动你可爱的右手,点点鼠标,打开一个Excel文件,录制一段宏来来研究研究,步骤如下:
      (1)选中任意一个单元格;
      (2)打开菜单—>工具—>宏—>录制新宏,调出宏录制对话框,输入宏名(mysub),确定;
      (3)设置单元格字体为仿宋体,红色;
      (4)点击停止录宏。
    这样,一个简单的设置单元格格式的宏就录好了。2、鼠标点一点,宏给单元格换新装
    下面我们来执行这段宏。
    (1)选中需要设置的任意单元格或单元格区域(为了看出效果,单元格最好有字符);
    (2)打开菜单—>工具—>宏—>宏,显示“宏”对话框(快捷键:Alt+F8);
    (3)选择我们刚才录制的宏,单击“执行”。
    这样我们看到已经为刚才选中的单元格的字体已被修改成仿宋体,红色。自己动手试着录制几段宏,再执行一下,加深印象。
    神奇了吧?以后当你再需要一遍又一遍地重复若干相同的操作的时候,会不会想到让宏来替你做这一切?这是一个不错的奴隶,不用花钱,且不用开工资,赚了吧?

    好了,收起你贪婪的笑容,继续往下看。

    宏是什么?现在相信你能想出一千种说法,由你了,又笨又懒的叶枫可没你聪明,也不再多说。
    上面说的执行宏的过程是不是让你感觉很麻烦?

    希望用快捷键来控制宏?这个我们可以在录制宏之前在录制宏对话框里进行设置。也可以在录制宏后进行设置,按Alt+F8显示宏对话框,单击“选项”,在“宏选项”对话框里进行设置3、寻根问底,找到宏的老窝
    如果你忘记了,请你再打开宏录制对话框,在宏名的下面,有一个“保存在”的选项,点一点下拉的箭头,我们可以看到,宏可以保存在三种不同的位置,分别是:
    (1)当前工作簿(系统默认):宏保存在当前工作薄的模块里,只有当该工作薄打开时,宏才起作用。
    (2)新工作簿:新建一个工作薄保存。 
    (3)个人宏工作簿:这是为宏而设计的一种特殊的具有自动隐藏特性的工作簿,如果你要让某个宏在多个工作簿都能使用,那么就应当创建个人宏工作簿,并将宏保存于其中。
    上面我们录制的宏是保存在当前工作薄里,今天我们在这里也只介绍保存在当前工作表里的宏。4、拨开层层迷雾,查看庐山真面目
    宏靠什么来控制Excel的运行?是不是感觉深在浓浓的迷雾里,感觉一头雾水?让我们鼓一鼓劲,拨开它的衣服,开开那家伙里面到底是什么?
    (1)按Alt+F8快捷键打开“宏”对话框;
    (2)选择我们刚才录制的宏,点“编辑”按钮。
    眼前一亮吧?这是一个新的天地——VBA的编辑器窗口(VBE),这个我们以后再说,先将注意力集中到显示的代码上。代码如下:

    1. Sub mysub()

    2. ' mysub Macro

    3.    ' 宏由ggsmart录制,时间: 2020-10-15'

    4.   With Selection.Font

    5.     .Name = "仿宋_GB2312"

    6.     .Size = 12

    7.     .Strikethrough = False

    8.     .Superscript = False

    9.     .Subscript = False

    10.     .OutlineFont = False

    11.     .Shadow = False

    12.     .Underline = xlUnderlineStyleNone

    13.     .ColorIndex = xlAutomatic

    14.   End With

    15. Selection.Font.ColorIndex = 3

    16. End Sub

    现在你可能感觉到上面这些乱七八糟的代码会很陌生,甚至在问自己是不是来到外星人的世界,反正叶枫当初是这样感觉的,但不要为此感到害怕,将来我们会慢慢熟悉他,就像闭上眼睛也能准确地将那个又大又红的苹果送到自己的嘴里。

    5、再进一步,给宏安上门铃
    一遍一遍地在宏对话框里选择宏名称,按“执行”按钮来运行宏的麻烦是不是让你郁闷得有些想吐血?指定快捷键虽然方便,但别人用自己的工作表时能不能快速上手?

    就算是自己,如果宏多了,或是放的时间长了,你还记得哪个快捷键控制哪个宏?
    作为excel开发者,一个主要的目标是为自动化提供一个易于操作的界面,“按钮”是最常见的界面组成元素之一,我们可以把宏指定给特定的按钮,通过按钮来执行宏,还是用刚才我们录制的那个宏来举例。通过使用“窗体”工具栏,可以为工作簿中的工作表添加按钮。在创建完一个按钮后,可以为它指定宏,然后你的用户就可以通过单击按钮来执行宏。在本练习中,将创建一个按钮,并为它指定一个宏,然后用该按钮来执行宏。

    具体步骤如下(Excel2003为例):
      (1)打开菜单—>视图—>工具栏—>窗体,调出窗体工具栏。

    8e43acf28b6ec84ccd6b04251394fd54.png

    (2)单击”窗体“工具栏中的“按钮”控件,在工作表中希望放置按钮的位置按下鼠标左键,拖动鼠标画出一个按钮,松开鼠标后,Excel会自动显示“指定宏”对话框。       

    ae311a147328891756c14b97142841ab.png

    (3)从“指定宏”对话框中选择“mysub”,单击“确定”。

    这样,就把该宏指定给命令按钮。

    课间休息:

    按钮,工作表等这些对象就像是Excel的众多儿女,儿女太多,怎么称呼这群儿女也是一个问题。

    为了不出现叫"儿子"就七八个一起跑出来,同许多农村父母给儿女起"老大,老二,老三……"的称呼一样,Excel也用这种顺序的起名方法给这些儿女贴上了标签:

    比如第一个按钮是"按钮一",再画一个就是"按钮二",然后是"按钮三","铵钮四"等等.这样,以后你要叫第三个儿子的时候直接叫"按钮三"即可。

    如果你嫌这个名字乡下味太浓,如果你嫌这个名字不能很好地反映点击它后会执行怎样的操作不清楚,你可以通过双击按钮表面激活它,可重新为按钮贴上合适的显示标签。

    需要提醒你的是,这里的标签只是它显示在你面前的样子,实际上它是什么名字?我们可以点击它,看一下名称框里是什么.  

     eeb33de67a3f4bb7d64f659d3716d81f.png

     为什么显示出来的是一样,而实际的名字却是另一样呢?

    也许你现在会感到迷茫,但不用管它,以后当我们学习了属性后,一切就自然明白了.
     下面我们来试一试用按钮操作:
    (1)选择单元格或单元格区域;
    (2)单击按钮。    

    3cf8f9893d805fac4c8ee6ddd562e1e7.png

    按钮就像装在楼下的门铃,美丽的嫦娥仙子家住在502,猪八戒来到楼下,找准号码502,轻轻一按,“叮咚,叮咚……”,嫦娥在楼上就给八戒开门了,八戒不用在楼下大声地喊“嫦娥,开门。”

    也不用花两毛钱给嫦娥打个电话,当然更不用顺着下水管从墙上爬进嫦娥的窗户,方便而实在吧?

    这种遥控式的命令的确能让繁琐的操作变得简单而方便,让我们获得了一些使用Excel标准命令所不能实现的功能。

    如果你是八戒,当你熟悉了如何使用这种遥控一样的门铃以后,你可能都会奇怪自己当初在没有门铃的情况下,那段漫长的爬下水管道的日子是怎么熬过来的。
    让嫦娥仙子开门的方法有很多种,同样执行宏也有多种方法可以选择,我们还可以把宏指定给图片,自选图形,这些比较简单,和指定给窗体按钮是一样的,同时我们还可以把宏指定给某个“事件”,比如单击工作表,双击工作表,激活工作表,打开工作簿等等,你要安什么要的门铃,选什么样的音乐,随你了。

    需要强调一点的是,我们刚说的“事件”是一个重要的概念,八戒按门铃,就是一个“事件”,这个“事件”引发了嫦娥的开门,只有门铃响了,嫦娥才会去开门。除此而外“方法”“对象”“属性”都是接下来我们会经常接触到的,慢慢走,留心点,一路上将会精彩不断。
    到这里,我们对宏应该有一个简单的了解了吧?

    宏实际上就是一个简单的VBA的Sub过程,它保存在模块里,以Sub开头,以End Sub结尾,执行时就从第一句逐句执行,直到End Sub结束。

    就像前面我们说的武术运动员练的那段套路动作,总是抱拳,扎马,出拳然后踢腿,永远不可能没有扎马就出拳,没有出拳就踢腿。

    我们今天录的这段宏也总是先设字体,再改字体颜色,这种顺序永远不会乱。

    说完这些,你是不是感觉这些操作古板得没有生气?是不是感觉这宏的操作不能满足自己的需求?
    叶枫想告诉你的是,宏代码绝不等于VBA,它只是VBA里最简单的运用,尽管许多Excel过程都可以用录制宏来完成,但是通过宏代码还是无法完成许多的工作,如:
      (1)不可以建立公式,函数;
      (2)没有判断或循环的功能;
      (3)不能进行人机交互;
      (4)无法显示用户窗体;
      (5)无法与其他软件或文件进行互动。
          …….
    所以,你看了上面的内容后千万不要以为宏就是VBA了,更不要以为自己已经会VBA了,事实上是你才刚沾上VBA的边,或者说连边都没沾上,甚至连宏今天我们都只是作了简单的介绍。
    路漫漫其修远兮,还等着我们上下去求索,路在脚下,武林高手总是从练习简单的套路动作开始,不要厌倦扎马的单调,静下心多练练,这会是你以后练习武功招式的一个基础。

    什么是VBE?

    相信你还没忘记吧?VBE就是VBA的编辑窗口,所有的VBA操作都在VBE里完成。
    VBE是一个分离出来的应用程序,它可以与Excel无缝结合,但是需要说明的是要运行VBE必须先运行Excel,VBA模块与Excel工作薄文件一起存储,除非激活VBE,否则VBA模块是看不见的。


    1、运行Excel后,怎样切换换到VBE窗口?
    打开大门的钥匙有很多把,千万别猴急地去爬下水管道。
    (1)按ALT+F11快捷键;
    (2)
    右击工作表名称标签,点击查看代码。

    4afa41e896ea3ad2de8a43df5fd96cf9.png

    (3)单击开发工具选项卡里的“Visual basic”命令。

    初识VBE窗口

    这个界面相信你不陌生吧?查看宏的时候我们已经见识过它了。

    bac83876a97a4f215383e026c99167cd.png

    “工程资源管理器”显示一个树型图示,包含了当前在Excel中打开的所有Excel对象,包含工作表,模块,窗体,加载宏及隐藏的工作薄,每个工作薄被认为是一个工程。

    在工程资源管理器里右击,可以在右键菜单里选择相应的命令插入模块或窗体。

    如果你想删除它或者保存它,同样也可以在这里进行相应的操作。

    bcca0e09f80b4a0e54a92bd342d5284f.png

    “属性窗口”显示当前你选择的Excel对象的属性。

    选中某个对象后,可以在属性窗口中修改选中的对象的的各样属性.如颜色,名称等。

    21d302c1041c6a811eb97e73aff924cd.png

    “立即窗口”,这是一个非常有用的窗口,在其中可以直接执行VBA语句,测试语句和调试代码,就跟我们在DOS下输入DOS命令一样。

    如果你的立即窗口不可见,按CRTL+G调出来,可以在里面尝试输入:
      [a1]=”我在学习VBA”
    回车,看一看A1单元格里发生了什么变化?

    5246e7c30be36b827e811b1c5d75c107.png

     “代码窗口”是干嘛用的?

    相信你已经很清楚了,当然是用来编辑VBA代码的地方,工程中的每一项都有一个与之相关联的代码窗口。

    如果要查看某对象的代码窗口,或者说如果要查看某对象上面究竟编写了什么VBA代码,在“工程资源管理器”窗口中双击对象即可。

    8319302e540409075d43997d6eb42638.png

    当然,你打开后的窗口不一定和上面一样,VBE的窗口也不只上面几个,我们可以打开“视图”菜单,在里面进行选择需要显示的窗口。

    54691ce2f75593fa8d4683437906b8aa.png

    对象、属性、方法,事件

    这是很重要的几个概念,是写VBA程序的基础,大家仔细读,一定要弄清楚。1、对象及对象层次结构 对象就是存在的东西,是VBA处理的内容,包括工作薄、工作表、工作表上的单元格区域、图表等等。

    对象可以相互包含,就像一个文件夹里可以包含多个文件夹一样,而这个文件夹又可以被其他的文件夹包含,一个工作薄对象可以包含多个多个工作表对象,一个工作表对象又可以包含多个单元格(或图表,图形等),这种对象的排列模式称为Excel的对象模型。集合这个概念经常遇到,我理解的集合是对相同类型的对象的统称。
    某中学有5000个学生,名字各不相同,我们对他都统称为某中学的学生,而不和一一去叫他们的名字,"某中学的学生"在这里是集合。对象的引用,在Excel里,Workbooks集合包含在Application对象里,当我们要引用某工作薄的时候,要遵循从大到小的规则。

    跟表示硬盘里的某个文件的位置一样,比如我们想引用D盘“我的文档”文件夹下的名为“我的VBA课程.doc”文件时要输入的是:
    D:\我的文档\我的VBA课程.doc
    同样,如果我们要引用名称为“mybook.xls”的工作薄时就是:
     Application.Workbooks(“mybook.xls”)
    和引用文件不同的是,VBA里使用的分隔符是点。


     同理,当我们引用“mybook.xls”里面的工作表“mysheet”时应是:
    Application.Workbooks(“mybook.xls”).Worksheets(“mysheet”)

    可以继续延伸到下一层,引用“mybook.xls”里工作表“mysheet”里面的单元格区域“A1:D10”:           Application.Workbooks(“mybook.xls”).Worksheets(“mysheet”).Range(“A1:D10”)
    但是并不是每一次引用都必须这么呆板,就像猪八戒不用每一次都去爬下水管道。

    如果我们引用的是活动对象,也就是被激活的对象,引用就可以进行简化。
    如果是mybook工作薄是激活的,引用可以简化为:

    Worksheets(“mysheet”).Range(“A1:D10”)
    如果mysheet当前也是激活的,引用甚至还可以简化为Range(“A1:D10”) ,也可以直接输入[A1:D10] ,如果引用的单元Range是单个的单元格,还可以用Cells(行号,列号)的引用方式。2、属性
    每一个对象都有属性,一个属性就是对一个对象的一个设置。
    猪八戒背着媳妇高秀兰回自己的紫云洞,猪八戒的媳妇就是对象,“高秀兰”就是猪八戒的媳妇的一个属性(name属性),引用对象的属性同样也要用点来分隔。
    猪八戒的媳妇.name=高秀兰
    别闲着,还是动动你的右手,打开一个工作表,Alt+F11(千万别说你不知道这个快捷键是干什么,要不我保证被你气个半死),如果立即窗口没有打开,按Ctrl+G打开,在里面输入:

    Msgbox Worksheets(1).name

    回车。

    1635df924b087ceef25e388b0f9793be.png

    Worksheets(1)和Worksheets(“sheet1”)有什么区别?

    Worksheets(1)表示Worksheets集合里的第一个工作表。
    Worksheets(“sheet1”)表示Worksheets集合里名为"sheet1"的工作表。
    至于Msgbox是什么,那就自己问Help了,在立即窗口里用鼠标左键把Msgbox抹黑,按F1,就弹出Help里对它的说明了。
    抹黑代码,再按F1即可看到相应的帮助。

    叶枫说:“这个办法很适用,一般人我不告诉他。”

    882c7865a3e1541ea238083c7dafab50.png

    一个对象有哪些属性我们可以在属性窗口里查看,要修改一个对象的某种属性,如名称、显示状态、颜色等等,也可以在属性窗口里进行修改,当然我们还可以利用代码进行修改。

    改当前工作薄里的第三个工作表的名称为“这个名字是我用VBA改的”,想想怎么写代码?
    把你的代码输在立即窗口里,回车,看看效果,你做到了吗?3、方法
    每一个对象都有方法,方法就是在对象上执行的某个动作。 
    和属性相比,属性表示的是对象某种状态或样子,是静态的,就像是语文里的名词、形容词和副词,而方法则是做某件事的一个动作,就像动词,对象和方法同样用点来分隔。


    例如Range对象有有一个方法是Select,他的作用是选中指定的Range(单元格区域)对象,在立即窗口里输入代码:

    Range("D1:F10").Select
    回车,可以看到D1:F10已经被选中了。

    f14b0ba5e40fe010365e93857f2c23e5.png

    4、事件
    在上面猪八戒按门铃那里,我们已经接触过什么是事件了。
    简单点说,事件就是由用户或者系统触发的,可以在代码中响应的一段代码。

    比如,当我们移动鼠标,打开工作薄,激活工作表,选中单元格,改变单元格的数值,点击按钮或窗体,敲击键盘等等这些都会产生一系列的事件,通过编写代码响应这些事件,当发生此类事件时,程序代码就会进行相应的操作。

    这样解释你会不会有些晕?

    感觉又一次进入了外星人的世界?

    还是举例说明,我们需要当激活某工作表的时候,自动弹出一个对话框,告诉我们激活的工作表的名称。


    (1)打开一个工作表,Alt+F11打开VBE窗口,在“工程对象管理器”窗口里双击你要进行设置的工作表,使其代码窗口显示。               
    (2)左面选择对象Worksheet(工作表对象),右面选择Activate事件,我们可以看到在代码窗口里系统已经为我们自动输入了一段代码。

    Private Sub Worksheet_Activate()

    End Sub

    提醒: 

    初学的我们,不必完全记住对象及事件的名称,也不必手工输入,系统早为你准备好了,你可以在代码窗口里进行选择,左边是对象,右面是事件,如果你想知道某个对象(例如工作薄、工作表、窗体等)有哪些事件,只需要双击这个对象,然后在代码窗口里查看即可。

    我们需要做的只是:当自己需要它的时候,知道打开哪个箱子把它拿出来即可.

    abab2b781f1a16e68e8373b11c38ea47.png

    废话说完,再回到问题里:
    要达到问题的目的,我们只需要在已给我们列出的两段代码中间加入需要进行操作的代码就可以了,这里我们需要的是一个对话框来提醒,对了,还记得Msgbox吧?
    输入代码:

    MsgBox "你现在激活的工作表名称是:" & ActiveSheet.Name

    上面的代码相信你应该能看懂吧?      

    &和我们工作表里的函数是一样的,连接文本的作用,Activesheet.name是当前活动工作表的名字(用了一个name属性)。


    回到工作表,激活你刚才设置代码的工作表,如果你刚才设置的工作表是激活状态,请选择其他工作表,然后再重新激活它,看看你看到了什么?

    4ce14ec7b25e00262033cefdff03af3b.png

    看一下上面的代码,对象和事件之间用什么来分隔?

    还是不是点?

    千万别懒,一定要动手,换其他的事件或其他的对象试一试,试着用代码改一下其他对象的属性,在单元格里添加点什么东西,这些随你了,你可千万别说你不知道哪些事件是干嘛用的。

    别忘记,抹黑代码,按F1,再重复一遍,这是一件好武器,一般人我不告诉他。

    今天到此结束,有缘日后再聊。

    图文制作:叶枫

    展开全文
  • 就像函数公式里面需要运算符一样,VBA中同样也需要运算符,今天我们就来了解下VBA中的运算符是怎么表达的。在学习运算符前,我们先来学习一段简单的VBA代码,Msgbox的表达。在代码窗口中输入:sub test ()'tset表示...

    就像函数公式里面需要运算符一样,VBA中同样也需要运算符,今天我们就来了解下VBA中的运算符是怎么表达的。

    在学习运算符前,我们先来学习一段简单的VBA代码,Msgbox的表达。

    c56e1889945221d7104a9bfd763a2ab7.gif

    在代码窗口中输入:

    sub test ()'tset表示测试的意思,你也可以用汉字表达

    Msgbox "2018,加油"

    end sub

    F5运行上面代码,就会弹出一个消息框,消息框里的内容就是代码中双引号里面的内容。

    学会了Msgbox的写法对我们后面的学习很有帮助,大家可以先简单理解,多学一点内容以后在进行融汇贯通。

    VBA中常见的运算符:

    ed2438459e76296b846e809d5b0bb102.png

    简单归纳下运算符分为以下几类:

    1、算术运算符:

    乘 *、除 / 、整除 、求余数 mod 、加 +、减 - 。

    我们可以自己测试下:

    7d8853ae62a13271b7a9628db595751e.gif

    Sub 乘()

    MsgBox 2 * 3

    End Sub

    Sub 求幂()

    MsgBox 2 ^ 3

    End Sub

    Sub 整除()

    MsgBox 8 3

    End Sub

    Sub 求余数()

    MsgBox 8 Mod 3

    End Sub

    2、连接运算符:

    & 、+

    9a5c434140b62852fa67d828df674829.gif

    注意字符串要用引号括起来。

    Sub 连接1()

    MsgBox "A" & "B"

    End Sub

    Sub 连接2()

    MsgBox "A" + "B"

    End Sub

    3、比较运算符

    等于 =、不等于 <>、小于< 大于 > 、小于等于<= 、大于等于 >=

    692ec601586690d9b74a7f000c2f3294.gif

    Sub 比较()

    MsgBox 1 > 2

    End Sub

    4、逻辑运算符

    与 and 、或 or 、非 not

    f230fe4c049ca6579ab7aac85b27c105.gif

    Sub 逻辑1()

    MsgBox 1 > 2 And 3 > 2 And 4 > 3

    End Sub

    Sub 逻辑2()

    MsgBox 1 > 2 Or 3 > 2

    End Sub

    Sub 逻辑3()

    MsgBox Not 1 > 2 Or 3 > 2

    End Sub

    这节的分享就到这里。

    转自:米宏Office

    展开全文
  • 目录第一节 VBA的逻辑判断语句if第二节 我们依次来测试一下第一节的例子第三节 编写if语句时的格式注意点第四节 VBA的比较运算符号第五节 VBA的逻辑运算符号第六节 技术总结第一节 VBA的逻辑判断语句if在做九九乘法...

    目录

    第一节 VBA的逻辑判断语句if

    第二节 我们依次来测试一下第一节的例子

    第三节 编写if语句时的格式注意点

    第四节 VBA的比较运算符号

    第五节 VBA的逻辑运算符号

    第六节 技术总结

    第一节 VBA的逻辑判断语句if

    在做九九乘法表的时候我们用到了if逻辑判断语句,这是VBA程序的重要组成部分,几乎所有的程序都会用到if语句,if逻辑判断语句主要有如下表所示的几种组合及用法

    • if组合示例1
    If 条件 then 执行语句If cells(1,1)>=60 then debug.print “你好,前浪”
    • if组合示例2
    If 条件 then执行语句End if  If cells(1,1)>=60 thendebug.print “你好,前浪”end if
    • if组合示例3
    If 条件 then执行语句1Else执行语句2End if If cells(1,1)>=60 thendebug.print “你好,前浪”elsedebug.print “你好,后浪”end if
    • if组合示例4
    If 条件1 then执行语句1Elseif 条件2 then执行语句2End if  If cells(1,1)>=60 thendebug.print “你好,前浪”elseif cells(1,1)>=20 thendebug.print “你好,后浪elseif cells(1,1)<20 thendebug.print “你好,后后浪end if
    • if组合示例5
    If 条件1 then执行语句1Elseif 条件2 then执行语句2Else执行语句3End if  If cells(1,1)>=60 thendebug.print “你好,前浪”elseif cells(1,1)>=20 thendebug.print “你好,后浪elsedebug.print “你好,后后浪end if
    • if组合示例6
    iif(条件,条件成立内容,条件不成立内容)Cells(1,2)=iif(cells(1,1)>=60,”前浪”,”后浪”)

    第二节 我们依次来测试一下第一节的例子

    1. 请注意这句话必须写在同一行,不可以换行(因为没有end if关门,只能写在一行VBE默认一行就是一句话结束)
     If cells(1,1)>=60 then debug.print “你好,前浪”
    154a612192e59e5250835a614eae8784.png

    图1

    1. 请注意这段程序的换行和缩进,缩进可以使得if逻辑更加清晰易读。运行效果和1一模一样,所以1和2这两段程序虽然写法不一样,但是作用是一样的,1的优点是比较简洁,但如果执行语句有两条及以上就不太合适了,有两条及以上执行语句的,请使用2。
    If Cells(1, 1) >= 60 ThenDebug.Print "你好,前浪"End If
    2475cab4029a9a78f30fe3ba4ceeb20f.png

    图2

    1. 前面1和2都只有大于等于60的时候才执行语句,这里增加了Else就是当小于60的时候执行语句。
    If Cells(1, 1) >= 60 ThenDebug.Print "你好,前浪"ElseDebug.Print "你好,后浪"End If
    18dad518c72f66dedd5e4f9572379159.png

    图3

    1. 上面3里面只有两种情况,大于等60或小于60,如果有多种情况,用if 和 else 组合就不够用了,VBA提供了if elseif 组合来应对多种判断情况。
    If Cells(1, 1) >= 60 ThenDebug.Print "你好,前浪"ElseIf Cells(1, 1) >= 20 ThenDebug.Print "你好,后浪"ElseIf Cells(1, 1) < 20 ThenDebug.Print "你好,后后浪"End If
    33dab4e5de62099dcaf9548ebead76a2.png

    图4

    1. 这里和上面4的主要区别是4 的最后一个elseif换成了else,他们的效果是一样的,我们来看一下运行的效果。
    If Cells(1, 1) >= 60 ThenDebug.Print "你好,前浪"ElseIf Cells(1, 1) >= 20 ThenDebug.Print "你好,后浪"ElseDebug.Print "你好,后后浪" & "|" & Cells(1, 1)End If
    c565b61babea223ae4c654214d266807.png

    图5

    1. IIF是VBA自带的函数,和上面的if else语句写法略有不同,主要是使用在单判断条件和单输出结果的时候。
    Cells(1, 2) = IIf(Cells(1, 1) >= 60, "前浪", "后浪")
    e2b65f511d0436b237244cf7429876a4.png

    图6

    第三节 编写if语句时的格式注意点

    1. 注意if then endif这几个词要成组出现。
    2. 写在 if 和 endif之间的执行程序要缩进,缩进的好处是让逻辑更清晰,不易出错。(缩进可以按TAB键或按第2篇文章所写调出缩进按钮)

    第四节 VBA的比较运算符号

    1. < 小于,例:a
    2. <= 小于等于,例:a<=b
    >大于,例:a>b>=大于等于,例:a>=b=等于,例:a=b<>不等于,例:a<>b

    第五节 VBA的逻辑运算符号

    1. Not 否,取条件判断相反的结果,例:if not true then 相当于 if false then
    2. And 且,要同时满足两个及以上的条件时用,例:if a>b and a>c then
    3. Or 或,两个及以上的条件只要满足一个时用,例:if a>b or a>c then

    第六节 技术总结

    1. If是VBA用于判断的重要语句
    2. If和比较运算符、逻辑运算符组合使用潜力巨大
    3. iif在做简单判断时比if语句更方便
    展开全文
  • VBA是个大工程,韩老师可能从数据类型、常量变量、语法等一一讲起,只能从简单的应用的写起。很多东西,还是需要大家自己去领悟。今天讲一个简单的判断等级的问题。IF函数函数判断等级如下的数据:可以用IF...
  • 例1:A2单元格的成绩大于等于60,则弹出对话框提示“及格”。Sub 判断成绩() If Range("A2") >= 60 Then MsgBox "及格"End Sub操作过程:二、If-Then-Else语句 说明:条件判断,如果......那么......否则......例...
  • 前段时间和大家提到了让excel自杀的VBA代码,引起了不少小伙伴的讨论,都说想看部落窝分享更多关于excel中VBA的知识,别催别催,这就来了吗。学习更多技巧,请收藏部落窝教育excel图文教程。说在【前言】前面的话 ...
  • 汇总工作表:【工具】Excel(VBA)、PQ【工作表】前提各个表中字段名称、数量、位置相同方式一:使用Excel(VBA)汇总工作表例如:将表“工作表汇总”中1月、2月、3月三个表格汇总第一步:打开表格“工作表汇总”,新建...
  • 宏的应用,能过非常快的解决问题,我找到了一个博主写的帖子,写的还挺详细,分享学习使用录制宏制作工资条 - 沉默的伯爵 - 博客园​www.cnblogs.com2.VBA一、 什么是VBAVBA是一种编程语言,它依...
  • 给大家分享一段VBA小代码,功能是:一键汇总各分表数据到总表。举个栗子,如下图,一个工作簿,包含多个工作表,现在需要将各个分表的数据汇总到总表中。碰到这样的问题,有些小伙伴会想到使用数据透视表或者合并...
  • 前景提要(文末提供源码...这就非常的尴尬了,我们都知道VBA操作的可逆,所以我们在进行批量工作表删除的时候,要留意一些关键工作表数据的保护,so,如何实现呢?场景说明这是我们之前使用过的工作表,我们这里...
  • 前面的文章我们学习了关于统计重复的姓名的问题,现在,我们反其道而行之,学习一下求出Excel中重复的人的姓名的VBA代码。当然,还是使用VBA中的字典来处理。假设有3张工作表,每张表格的A列都是姓名列,所有这些...
  • 其实,VBA 代码并可怕,只是因为我们接触得了解,又总听到厉害的人说起它,所以才觉得它又神秘又可怕。而今天,小 E 就要来揭开 VBA 代码的神秘面纱,并且介绍几个常用的简单代码,能够让大家非常方便地运用...
  • 前景提要(文末提供源码...这就非常的尴尬了,我们都知道VBA操作的可逆,所以我们在进行批量工作表删除的时候,要留意一些关键工作表数据的保护,so,如何实现呢?场景说明这是我们之前使用过的工作表,我们这里...
  • 导读:在Excel中批量创建工作表往往是使用VBA来实现的,但是VBA对于大部分职场同学来说,门槛似乎有点高,如果碰到需要创建大量工作表,还有什么便捷的方法呢?其实透视表的报表筛选页给我们提供了一个很好的解决...
  • 每天一篇Excel技术图文微信公众号:..."顺序"咱们前面章节讲过了,"循环"下下章咱们会讲,"分支"的实现在VBA中主要依靠IF语句……是的,今天就来给大家详细聊下IF,聊下它的基本概念、"与"和"或"关系的实现、同I...
  • 其实,VBA 代码并可怕,只是因为我们接触得了解,又总听到厉害的人说起它,所以才觉得它又神秘又可怕。而今天,小 E 就要来揭开 VBA 代码的神秘面纱,并且介绍几个常用的简单代码,能够让大家非常方便地运用...
  • VBA遥远,而是与你的工作息息相关。你也不要把VBA想得太复杂,跟着卢子学习就行,其他别想。还是老套路,用最原始的方法操作,先录制宏,再慢慢改代码完善。Step 01录制一个宏,将模板移动或复制,移至最后,...
  • 前言:今天本来准备尝试写一...本来我以为利用openpyxl处理起来会得心应手,结果出乎我所料,这一次的数据处理用这个库竟然那么"容易",这里的容易是指在处理过程当中让我心烦意乱,代码冗余让我难受。究其原因...
  • 试玉要烧三日满,辨材须待七年期。大家好,我是IT探险家,今天给大家带来excel的高级玩法。...这是什么鬼?...首先一点大家需要知道excel中有一个叫做VBA的东西,那什么是VBA呢?VBA(Visual Basic ...
  • 使用复制粘贴使用函数公式也使用VBA代码的情况下,你会吗?今天小编教大家如何将多个工作表汇总成为一个工作表,请大家多多转发和点赞哦~下图就是我们本教程要将工作簿中三个工作表汇总为一个工作表的示例...
  • 本次案例来自悟空问答网友提问,之前由于时间原因,回复比较简单没有给出具体实现方法,今天花时间整理写成图文,希望小伙伴们都可以...别担心,既然我们是用VBA来解决问题,解决这种事情重复机械的劳动,当然不是...
  • 4) = arr(i, j) '本例初始表示为brr2行4列等于arr2行3列NextNextOn Error Resume NextIf Worksheets("整理后数据") Is Nothing Then'如果“整理后数据表”存在,则新建“整理后数据”表在“结果一”表格前,结果...
  • 上次和这次还有下次的东西对于学过编程的孩子来说非常简单,学过编程的孩子可以直接跳过不看最近忙着用VBA简化工作流程,码代码很快乐,好久没有分享我的VBA学习过程了Tina:我的VBA学习之旅(四)——程序结构之...
  • 导读:一、校验码的防伪原理,二、校验码的应用需求,三、Excel生成校验码的方法,四、使用效果...校验码的生成,是通过随机数产生函数来实现的,即在每次操作的同时系统产生一个随机的规则的唯一的数,不同机器...
  • 在一个数据表,任意选定区域 ,判断单元格内的值,如果等于指定值,不做任何操作,如果不等于指定的值,则把单元格所在的列删除,请教VBA如何实现。
  • 学习资源:《Excel VBA从入门到进阶》第45集 by兰色幻想本集讲的是随机抽取,和之前的字典、棋盘法有点像。下面用一些例子来举例说明。例1:写一个抽奖小程序,在A-J 10个人里抽取一个朋友送小礼物。-思路:A-J,...
  • Option ExplicitFunction getRandom(total As Integer, max As Integer, num As Integer) As Boolean'total是最后要得到的总和,max是最大能超过的数,num是产生多少个随机数Dim ranNum As Single '随机数Dim ...
  • 什么?点名还用“随机”吗?!其实,提问是课堂教学...下面简单介绍一下制作方法,并以此抛砖引玉,让小白们认识一下VBA的世界:什么是VBA严格来讲,如果了解VBA,就等于没有学过office!VBA的全称是Visual Basic...
  • 当成绩大于等于60,则为及格,否则及格。之后再把公式下拉填充即可完成对所有学生的成绩判定。如何能通过VBA代码来对学生成绩进行一次性判定?1. 首先还是来到VBA的编程环境,点击“开发工具”> “Visual Basic...

空空如也

空空如也

1 2 3 4
收藏数 78
精华内容 31
关键字:

vba不等于