中企动力 > 商学院 > excel中vba怎么用
  • ?

    如何利用VBA控制窗口在不同的工作表间切换

    廖苡

    展开

    或许你看过不同的VBA程序的运行,对于窗口的切换一定印象深刻。在程序运行时,根据不同的需求,窗口在不同的工作表间自由的切换,可以先从一个工作表取值,放到第二个工作表中,再从其他的工作表中取出参数并参与运算,运算得出结果,放到一个单独的工作表中,看的人眼花缭乱。

    这种运算是VBA所特有的。虽然在运行时会产生很多的碎片,影响时间的利用,但对于单纯的运算来讲,还是节约了时间,最主要的是提高了数据的准确性和可信度。

    在羡慕别人的同时,是否也希望自己能做出这样的程序呢?当然,对于每位学习VBA的朋友来说,这是很自然的事情,学以致用,利用自己的所学。从VBA入手点滴的积累,总会有所收获,正如你经常来我这个平台,福不唐捐,总会能碰到你急于掌握的知识一样。前些时有位朋友留言,说是帮了他大忙,但我确实不知道这位朋友的大忙是什么,也并非给这位朋友定制的,总是机缘吧。

    闲话少叙,其实这个实现起来很简单的,今天就给大家讲解一下利用VBA如何控制窗口的切换。

    我们先看下面的代码:

    11 Dim AppPATH

    12 AppPATH = ActiveWorkbook.Path

    13 ChDir AppPATH

    14 Workbooks.Open FileName:=AppPATH & "\XX.XLS" '打开文件

    15 Sheets("SHEET1").Select

    16

    17 Do While .Cells(I, 1).Value <>""

    18-90 '提取数据’

    91 I = I + 1

    92 Loop

    93

    94 ActiveWindow.Close (False) '关闭文件

    95

    96 Windows("LUMAN").Activate

    97

    98 Sheets("SHEET1").Select

    99-199 '执行操作

    200

    201 Sheets("SHEET2").Select

    201-230 '执行操作

    231

    232 MsgBox ("ok!")

    233

    程序讲解,上面的代码是一个名为LUMAN.xls的EXCEL的VBA部分代码,当执行到第11行时,程序会识别一下路径,进而打开一个在同文件夹下名字为XX的文件。

    15-93行程序会在此文件中进行操作,此时窗口的文件就是这个XX的文件,当执行到第94行时,文件XX会自动的关闭

    执行到第95行时,活动窗口又回到了LUMAN的文件,先在SHEET1中进行操作,然后到SHEET2中进行操作。

    所有操作执行完成后弹出对话框”OK”。

    上面的代码在运行的过程中用到了两个文件,并在期间切换运行,窗口的可视性非常的好,这点比其他程序要友好,如VB6的控件,GO对EXCEL的操作。这也是强大的EXCEL的功能造就的。

    当然,对于初识VBA的朋友,上面的讲解不是很解渴,不过没关系的,上面的文章中引入了很多的知识点,如:如何获得当前的地址,如何打开一个文件,如何关闭一个文件,如何把窗口切换到另外的文件等等,只要你掌握了其中之一,就有收获,而且是不小的收获。

    今日内容回向:

    1 VBA如何获得当前的地址,

    2 VBA如何打开一个文件,

    3 VBA如何关闭一个文件,

    4 VBA如何把窗口切换到另外的文件

    5 如何提高程序的可视性

    6 如果不关闭上一个窗口,是否会影响到下面的操作?

    分享成果,随喜正能量

  • ?

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

  • ?

    VBA使用代码的赏析之十:OFFSET函数的实际利用

    邱涵雁

    展开

    今日继续讲VBA实用代码的第十讲,相信大家通过这系列的文章学到了很多,今日着重讲解OFFSET函数在VBA中多的利用。

    1 Range("A32", Range("A32").End(xlUp)).Select

    Range(ActiveCell, ActiveCell.End(xlUp)).Select

    语句说明:执行上述代码后选择当前活动单元格向上至第一个非空单元格:

    备注:ActiveCell是指当前活动单元格。

    2 Range("A1", Range("A1").End(xltoRight)).Select

    Range(ActiveCell, ActiveCell.End(xltoLeft)).Select

    语句说明:执行上述代码后选择当前活动单元格向右至第一个非空单元格。

    备注:是 "xlTORight"而不是 "xlRight"

    3 Range("A2", Range("A2").Offset(0, 10)).Select

    Range(ActiveCell, ActiveCell.Offset(0, 10)).Select

    语句说明:执行上述代码后选择当前活动单元格向右至第10个单元格。

    备注: OFFSET函数的意义与EXCEL函数中的意义有所不同。可以把他看做一个单元格的属性,即Range.Offset 属性。返回 Range 对象,它代表位于指定单元格区域的一定的偏移量位置上的区域。

    表达式:Offset(RowOffset, ColumnOffset)

    其中参数:RowOffset, ColumnOffset代表偏移行,列。数字可以是正数,负数,零值

    RowOffset 可选 Variant 区域偏移的行数(正数、负数或0(零))。正数表示向下偏移,负数表示向上偏移。默认值是 0。

    ColumnOffset 可选 Variant 区域偏移的列数(正数、负数或0(零))。正数表示向右偏移,负数表示向左偏移。默认值是 0。

    4 Range("A20", Range("A20").Offset(0, -10)).Select

    Range(ActiveCell, ActiveCell.Offset(0, -10)).Select

    语句说明:执行上述代码后选择当前活动单元格向左至第10个单元格。

    备注:ColumnOffset 代表 Variant 区域偏移的列数,负数表示向左偏移。

    5 Range("a2", Range("a2").Offset(10, 0)).Select

    Range(ActiveCell, ActiveCell.Offset(10, 0)).Select

    语句说明:执行上述代码后,选择当前活动单元格向下至第10个单元格。

    备注:RowOffset 代表Variant 区域偏移的行数,正数表示向下偏移,负数表示向上偏移。默认值是 0。

    6 Range("A1").End(xlDown).Offset(1, 0).Select

    语句说明:执行上述代码后,选择该行中第一个空单元格

    备注:End(xlDown)是指向下移动

    7 Range("A1").End(xltoRight).Offset(0,1).Select

    语句说明:执行上述代码后,选择该列中第一个空单元格:

    备注:End(xltoRight)是向右移动。

    8 ActiveCell.Offset(0, -ActiveCell.Column + 1).Select

    语句说明:执行上述代码后,移至当前行的第一个单元格的动作(即你按下“Home”键的动作)

    ActiveCell.Offset( -ActiveCell.Row + 1,0).Select

    语句说明:执行上述代码后,移至当前列的第一个单元格:

    备注:充分利用OFFSET函数,实现单元格的选择。

    看下面的代码:

    运行:

    9 ActiveCell.Offset(13, 14).Select

    Selection.Offset(-3, -4).Select

    语句说明:执行上述代码后,单元格间移动。

    备注:你可以定义一变量,并且用offset来实现,

    例如:varFreightRowsCount = Range("A1").CurrentRegion.Rows.Count

    ActiveCell.Offset(varFreightRowsCount, 0).Select

    几日内容回向:

    1 OFFSET函数在VBA和EXCEL中有什么不同?

    2 OFFSET函数在VBA中有哪些精彩利用

  • ?

    在Excel中如何使用VBA使单元格的颜色产生变化

    小笨

    展开

    首先,你必须有点VB的基本常识。

    只要会用8个最简单的语句,例如:

    for i = 1 to 20

    next

    if x=20 then

    goto 1000

    end

    然后:你点开工作薄,点开工具,再点开宏,录制新宏。这时,你把你所要的单元格点成你所要的颜色。然后关闭宏。你再键ALT +F11,你就进入VBA后台了,点击模块1,这就是刚才电脑纪录你动作的宏,其实就是电脑在帮你编程。你理解一下,再修改。

    只要你有悟性,慢慢地,你什么都会编的。反正先让电脑自己做宏,你学习并修改。我们现在可以在单元格里做动画。

    VBA用处很大,学会VBA及后台编程,按微软的说法,你就不再是一个EXCEL用户,而是一个专家。好好钻吧。

    我们就是先让电脑自己做宏,然后对照书修改。渐渐你就会做一些电脑自己做不出来的东西了!EXCEL非常神奇啊!里面可学的东西太多太多。而我们通常看到大家都在“用”EXCEL,那简直是在糟蹋EXCEL。

  • ?

    VBA代码之九:如何利用VBA代码进行选择操作

    邬语蓉

    展开

    今日和大家分享VBA的实用语句之九,这节主要是讲解选择的方法在VBA中的实现方法,如果在EXCEL中主要轻点鼠标就可以实现,那么在VBA中是如何实现的呢?我们看下面的代码。

    1 Sheets("BBC").Activate.

    语句说明:执行上述代码后,选择一个名为"BBC"的工作表:

    备注:在工作表的操作时可以用select.

    2 Range("A1").Select

    语句说明:执行上述代码后,选择一个名为" A1"的单元格:

    备注:RANGE是单元格,也可以用CELLS(M,N)来代替,其中M是行,N是列。

    3 Range("A1:G8").Select

    语句说明:执行上述代码后,选择"A1:G8"的连续单元格:

    选择不连续的单元格:

    Range("A1,B6,D9").Select

    Range("A1,B6:B10,D9").Select

    语句说明:执行上述代码后,选择不连续单元格:"A1,B6,D9","A1,B6:B10,D9"

    备注:CELLS()的单元格表示方式是不能用这种表示方法的。

    4 Cells.Select

    语句说明:执行上述代码后,选择整个工作表:

    备注:注意select和selection的区别。

    5 Range("A1").CurrentRegion.Select

    语句说明:执行上述代码后,选择当前单元格所在的区域(遇到空行/空列即止):

    备注:CurrentRegion的意义是区域,CurrentRegion属性返回代表当前区域的Range对象。当前区域是指包含有当前单元格的由空行和空列围绕组成的区域。在该区域中,必须保证区域中的每一行或列中至少有一个存在数据的单元格。 但是,该属性在受保护的工作表中无效。如何理解上面“由空行和空列围绕组成的区域”呢?我们看下面的实例:

    代码:

    现在有下面的区域:、

    执行代码后:

    上面深色区域是选择后的区域。它是由空格包围的。

    6 Rows("1").Select

    Columns("A").Select

    或者:

    ActiveCell.EntireRow.Select

    ActiveCell.EntireColumn.Select

    语句说明:执行上述代码后,选择行或列。

    7 Columns("A:C").Select

    Rows("1:5").Select

    语句说明:执行上述代码后,选择选择相邻的多行/多列:

    备注:使用"Columns/Rows":要注意和下面第八点的区别。

    8 Range("A:A, C:C, E:F").Select

    Range("1:1,5:6,9:9").Select

    语句说明:执行上述代码后,选择不相邻的多行/多列:

    备注:和选择相邻的多行/多列不同,使用"Range"而不是"Columns/Rows"

    9 Range("A1", Range("A1").End(xlDown)).Select

    Range(ActiveCell, ActiveCell.End(xlDown)).Select

    语句说明:执行上述代码后选择当前活动单元格向下至最后一个非空单元格:

    备注:注意理解End(xlDown)的意义,相当于CTRL+END

    今日回向:

    1 选择包括哪些内容?

    2 如何理解CurrentRegion属性?

  • ?

    Excel VBA之自定义函数Function

    钱伟帮

    展开

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

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

    || 版本号:Excel2013. ||

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

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

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

    自定义函数的基本语法

    Function也是保存在模块中

    如下:

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

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

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

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

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

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

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

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

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

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

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

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

  • ?

    Excel中的VBA代码你可以写出来,可是你真的会优化代码吗?

    鲸鱼

    展开

    我们很多时候在用Excel VBA去实现某一个功能的时候,也许会用到很多行的代码去实现我们最终要的结果。

    可是有时候你殊不知,有些代码是经过录制宏产生的,或者语句繁琐,变量不正确从而造成你所写的程序运行的时间非常久,或者造成计算机的CPU使用率达到100%,严重可导致系统崩溃发生。

    但是这样的结果显而易见,并不是我们想要的结果。我们想要的是一个可靠的,高效率的,简化操作的,提高劳工效率,减少错误率的,适应性强的程序。

    所以我们不得不寻求更好的方法去改善,去优化代码,以寻求高效率完成我们的工作。

    下面我们重点和大家分享一下,怎么去优化我们的代码:

    1.关闭屏幕刷新,速度可以提升30%的速度。所以大家在写完代码的时候,不妨在我们程序最开始加上这句话,当然在程序执行完之前,也就是最后一句话的时候,你要记得将屏幕刷新打开。

    Sub test()

    Application.DisplayAlerts = False

    Cells(1, 1) = 1

    Application.DisplayAlerts = True

    End Sub

    2. 使用工作表函数,这句话的意思就是说我们某些时候,可以优先考虑Excel自带的函数去实现这个,而不是我们自己去写代码。当然效果都是一样的,但是时间可能就不是一样。

    Sub ShtFunctions()

    a.使用循环进行数据累加计算

    For i = 1 To 40000

    MySum = MySum + Cells(i, 1)

    Next

    b.直接使用工作表进行求和

    Cells(1, 1) = Application.Sum(Range("A1:A40000"))

    End Sub

    3. 使用With-End With语句,减少引用对象的寻找速度,提高程序的效率。当然这样还有一个优点,就是我们要改变引用对象的时候,只需改变一个位置即可,这样也便于后期的维护和修改。

    Sub test()

    With Range("E5").Font

    .Color = -16776961

    .Font.Bold = True

    .Name = "宋体"

    .Size = 9

    .Name = "Arial Unicode MS"

    .Size = 9

    End With

    End Sub

    4.数据类型的正确选用,这个也是非常关键的。这个就好像你去打水喝,正确的应该是拿杯子过去,但是你拿着一个很大的桶去接水喝,当然都可以完成喝水这个动作,但是明显就可以看出拿桶的那个人选择就有问题。其实在我的Excel中处理数据的能力也是不一样的,处理速度最快的是long>integer>byte>Single>Double>Currency。需要注意的是,如果我们不定义变量,那么系统默认为Variant类型,当我定义合适,速度就会有提升,所以每次我们千万记得要选择最合适自己的啦!

    5.使用数组,数组和字典是VBA的核心功能,所有在可以使用数组的时候,千万记得使用数组。在某些时候,在使用数组和不使用数组对比下,速度可能相差100倍。尽量减少变量的使用,增加数组和字典的配套使用。还有就是多使用动态的数据,少使用静态的数据,数组的Redim和Preserve要常记得。

    6.多清除对象的缓存,比如 Set d = Nothing,这句话的意思就是卸除对象的引用。这样也可以稍微加快一点执行的速度。另外我们可以通过减少循环的次数,减少类模块的使用,减少模块的使用,减少我们语句中的激活的次数,或者寻找更优质效率更高的代码。

    以上就是自己在学习VBA的时候,自己的一点点优化代码的一点点方法,可能还有其他的更好的优化只能慢慢去了解去学习,慢慢积累。虽然Excel VBA并不万能的,但是能帮助我们提高工作效率,就已经足够让你我欣慰。与君共勉之!

    PS:学习的苦难需要我们主动面对,生活的苦难你躺着它自己主动就过来啦!与君共勉!!!

    以上就是今天要和大家分享的技巧,希望对大家有所帮助,祝各位一天好心情!

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

    Excel中每一个方法都有特定的用途,不是他们没有用处,只是你不了解或者暂时用不着,建议你收藏起来,万一哪天用着呢?

  • ?

    利用了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 ’程序结束。

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

    分享成果,随喜正能量

  • ?

    太实用了!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的知识,欢迎大家留言、讨论!

  • ?

    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