VBA宏编程操作指南

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
之后“录制宏”会变成“停止录用”,表示已经在录制过程中,在这个过程中你所进行有关EXCEL的操作都会被以代码的形式记录下来。
第三部分:
在你创建一个宏命令之前,花几分钟来考虑你究竟想做什么。因为宏命令是一大堆键盘输入的集合,事先计划你的行动非常重要。最早的计划宏命令的方法是手动地将宏命令需要做的事情做一遍。在你做键盘输入的同时,在一张纸上记录下他们实际发生的情况,不要漏掉任何东西。象录音机一样,Excel可以将你的所有动作录制下来(事实上并非如此,有些操作是无法录制的)。如果在录制宏之前,你没有很好地计划,你会录制很多不必要的步骤,而这些都会影响运行速度。尽管修改宏代码比去除录制宏里面不必要的步骤容易,但是,仅仅录制必要的步骤会节省你修改代码的时间和以后的麻烦。
ActiveWindow.ScrollRow = 2875
ActiveWindow.ScrollRow = 3000
ActiveWindow.ScrollRow = 3125
ActiveWindow.ScrollRow = 3249
ActiveWindow.ScrollRow = 3374
ActiveWindow.ScrollRow = 3499
当执行到Ai为空白时(如上图则表示执行到A14),执行Cells(i, 1).Select
ActiveSheet.Paste,也就是选中A14单元格,进行粘贴。这样通过判断空白的方法就不会因为行数的变动而产生影响了。
注意:上面我们说的只是根据Cells(i, 1)判断,同样,也可以根据Cells(i,2)第二列判断,Cells(i,3)第三列判断等,这样就可以避免因为前面几列的空白列而导致后面列的判断出现问题。
ActiveWindow.ScrollRow = 1125
ActiveWindow.ScrollRow = 1625
ActiveWindow.ScrollRow = 2250
ActiveWindow.ScrollRow = 2375
ActiveWindow.ScrollRow = 2625
ActiveWindow.ScrollRow = 2750
6、MsgBox "清除成功!"
Exit Sub
Err1:
MsgBox "清除失败!"
主要是MsgBox代码的应用,大家可以参考网上的一些资料,一般改代码都放在最后,会出现如下的运行界面,主要用于提示信息。
7、ActiveSheet.Range("$A$1:$AN$295").AutoFilter Field:=12, Criteria1:="10104"
EXCEL宏就是一个解决此类问题的办法,编写好一个实用的EXCEL宏可以大幅度提高工作效率和质量,因此掌握宏编程显得尤为重要。
但是并不是每个人都学过编程,都了解VBA语言,那么怎样才能快速学习和掌握应用宏呢?
下面我就根据我个人的学习经验及理解来教大家如何学习VBA编程。
不需要理解代码的含义,不需要知道哪一步操作是什么代码,只要你会复制粘贴,就能够写出EXCEL宏,提高你的工作效率。
实际应用:如果你的宏执行需要很多文件,那么就可以再一开始就先执行打开每个文件,如:
Dim str As String
str = ThisWorkbook.Path & "\日常数据模板.xls"
Workbooks.Open str
str = ThisWorkbook.Path & "\临时表.xls"
此语句主要用途:修正自动填充导致的数据超出计划。
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A10")
假如你有A1-A12小区CI需要关联小区扰码,当你在B2单元格通过VLOOKUP关联数据时,你肯定需要让B2自动填充到B12。但是如果你每天都需要关联数据,而每次数据都会变化,即今天要关联A1-A12,明天是A1-A20,这样就需要自动填充到A20,但是EXCEL不是智能的,你第一次设定的自动填充到A12,当然不会变了,这样就有可能导致数据不全。
为了解决这个问题,你可以让EXCEL自动填充到第1000行,然后把多余的删掉就可以了(也就是把20行以后自动填充的数据自动删除)。
如图所示:从B21开始出现#N/A,这些数据没用的,使用
i = 1
While (Cells(i, 1) <> "")
i = i + 1
Wend
Cells(i, 1).Select
Workbooks.Open str
str = ThisWorkbook.Path & "\扰码分布表.xls"
Workbooks.Open str
2、Windows("***.xls").Activate
Workbooks("***.xls").Close SaveChanges:=False
代码解释:关闭文件名为“***”,属性为xls的文件等。
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
Columns("N:N").Select
当然,对于每天固定行数的EXCEL,是可以的,但是如果每天的数据都在变,今天第一个EXCEL有17行,第二天又变为10行,第二个EXCEL今天有20行,第二天变为25行,这样你就没法使用固定的单元格定位粘贴数据了。
因此就需要上面的代码。
语句类型为While……Wend……
While (Cells(i, 1) <> "")Cells(i, 1)当i=1,表示A1单元格,也就是当A1单元格不为空白的时候,执行i = i + 1,也就是接着判断A2是不是空白,依次类推……
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
修订记录
版本
日期
作者
说明
V1.0
2011-3-17
jingpengtao
VBA基础教程,不用自己写代码,不用看懂代码也可以写出适合自己工作的宏。
序:
EXCEL在我们平时的生活工作中有着广泛和重要的应用,尤其是对于每天和大量数据打交道的人员更重要,但同时对大量数据的操作又显得是那么的繁琐,一不小心就很容易出错,对于每天都需要用EXCEL做同样事情的人来说,要是能够有一种工具来自动做工作就好了。
Windows("临时表.xls").Activate
Workbooks("临时表.xls").Close SaveChanges:=False
3、i = 1
While (Cells(i, 1) <> "")
i = i + 1
Wend
Cells(i, 1).Select
ActiveSheet.Paste
代码解释:此段语句主要是对单元格进行判断,是否为空白,如果为空白,则执行粘贴。具体解释请看下图:
假如你要把N个不同EXCEL的内容粘贴到一个新的EXCEL里,也就是汇总所有的数据。假如第一个EXCEL内容有13行,第二个EXCEL内容有18行,第三个EXCEL内容有20行,等等。
也许你会说直接定位到单元格不行吗?
俗话说:“授之以鱼,不如授之以渔”,所以替人写宏不如教给他方法,也方便各自修改。
学完本教程,写一些简单的宏肯定可以。编写本教程的目的就是为了方便经常和数据打交道的同事朋友,能够各自根据需要编写自己的宏。
备注:由于本教程V1、0版本只是针对从未接触过VBA语言及刚入门的人员编写的,并未涉及更详细的代码分析及条件语句,循环语句,数据语句等,将会在后期的版本更新中不断完善。
一般情况下,如果你执行宏,执行最后会出现如下截图,如果在代码的最前端加上一句Application.DisplayAlerts = False,那么就不会显示这些提示信息了。
例如上图表示你再录制的过程中需要进行分列,我们知道在执行分列之后,会弹出上面的对话框要求选择,如果在代码的开始不增加Application.DisplayAlerts = False,则在执行的过程中会弹出对话框让我们选择,点击确定之后才会继续执行。
第二部分:
1、如何录制宏。
首先打开EXCEL2007,点到“开发工具”那一栏,(注意:有的人打开之后发现没有开发工具那一栏,原因可能是因为从没用过宏,没有开启其功能,需要在“信任中心”下的宏设置里面设置为“启用所有宏”即可)
2、开始录制宏
点击录制宏,如下图所示,出现一个对话框,输入宏的名字,点击确定即可。
如:
Windows("日常数据模板.xls").Activate
Workbooks("日常数据模板.xls").Close SaveChanges:=False
Windows("扰码分布表.xls").Activate
Workbooks("扰码分布表.xls").Close SaveChanges:=True
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
执行之后,B21往下的#N/A都会清空的。
5、Application.DisplayAlerts = False
代码解释:在宏的执行过程中出现的告警框不显示。
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.ScrollRow = 126
ActiveWindow.ScrollRow = 501
其中SaveChanges:=False意为不保存直接关闭该文件,如果SaveChanges:=True,则表示保存之后再关闭该文件。
实际应用:在执行完所有的代码之后关闭各个已打开的文件,对于需要保存数据的SaveChanges:=True即可,对于不需要保存数据的SaveChanges:=False。
ActiveWindow.ScrollRow = 3624
ActiveWindow.ScrollRow = 3749
ActiveWindow.ScrollRow = 3999
类似于ActiveWindow.ScrollColumn,ActiveWindow.ScrollRow,等等都是一些无用的代码,产生这些代码的原因就是因为我们拖拽鼠标,滑动鼠标的滑轮造成的,这些代码就是需要我们删除的,删除之后并不影响代ຫໍສະໝຸດ Baidu的运行,也同时使我们的代码变的精简美观。
此代码的和3部分的代码有相似之处,不同的地方时当判断Cells(i, 1)为空时,下一步的执行不一样。
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
此语句执行之后如下:
也就是当Cells(i, 1)为空时(本图表示A13为空时),从A13开始清除A13往右以及往下所有的数据。
由于编者水平经验有限,难免会有一些不足之处,还望多多包涵。
第一部分
1、Dim str As String
str = ThisWorkbook.Path & "\***.xls"
Workbooks.Open str
代码解释:自动打开文件名为“***”,属性为xls的文件。同时xlsx,csv文件也可打开。
4、i = 1
While (Cells(i, 1) <> "")
i = i + 1
Wend
Cells(i, 1).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
代码解释:此段语句主要是对单元格进行判断,是否为空白,如果为空白,则执行该单元格以下所有数据的清除。具体解释请看下图:
相关文档
最新文档