一 : excel2017如何加载宏
第一种方法:
先按组和键 Alt + T ,出现下图所示提示
松开后,再单独按下 I 。
。www.61k.com)然后就是如下图选择 分析工具库
第二种方法:
点击文件
点击 选项
点击左边 倒数第二个 加载宏
点击 管理 里面 选择的是 excel 加载项 然后点击 转到 即会弹出熟悉的对话框 呵呵
第三种方法:
跟第二步前两步同样是: 文件选项
(本文来源于网站,更多请访问不同的是选择 倒数第四个 自定义功能区
看到右边主选项卡 勾选里面的开发工具
(本文来源于网站,更多请访问勾选好 确定后 就会在功能区 看到 开发工具 了
再点击开发工具
点击 加载宏 又会出现熟悉的对话框
我们经常使用Excel打印表格时,常常会遇到这样一个问题,打印出来的表格时常在纸张上显示不完整。
如何才能将这些多出的部分打印到一张纸上呢?
如果你的版本是Excel2010,那么可以尝试一下方法来帮你解决:
①打开需要打印的Excel文档,然后单击文件--打印;
②在设置栏下,单击无缩放旁的小箭头;从下拉菜单中选择将工作表调整为一页;
③这样我们就可以在同一页面打开完整的表格了。
PS:
在打印预览窗口,我们可以看大体看到页面设置。有时需要稍稍的调整,我们通常会单击页面设置进行操作。
其实,还有一个更简单的方法:直接拖拽鼠标调整设置。
单击预览窗口右下方的显示边距按钮;
此时预览窗口会出现一些灰色线条和黑色节点,用鼠标拖拽它们即可轻松调整页面的设置。
有时候我们希望在Excel中将一些数据相加或者相乘得出它的和或积。在Excel中无论是求和还是求差都是非常方便的,而且准确无误。本次就来为大家详细讲解如何使用Excel2010批量求和的方法。
Excel2010单个求和方法:
如下图所示,我希望将A1与B1相加求和。
①首先,我们得找个空地,来放相加得出来的结果,就选择C1吧,将A1和B1相加得出的结果填在C1中(鼠标单击选择C1单元格);
②选择C1后,在编辑栏中输入=a1+b1;(如下图)
③然后,按下键盘上的回车键即可,此时我们想要的结果已经出现在了C1单元格中了。
Excel2010批量求和方法:
接着上面的讲,上面我们讲的是单个单个的求和,下面我们再来讲下如何批量求和,从A1到A11与B1到B11相加求和,然后结果依次显示在C1到C11单元格内。
①首先,我们得先单个的求出一个和,将得出的结果放到C1中。也就是说批量求和的第一个步骤就是单个求和的所有步骤;tulaoshi
②将光标移动到C1单元格右下角处,直到鼠标变成了一个黑色十字架形状的时候按住鼠标左键不放,一直拖到C11单元格后在松开鼠标即可;
OK,此时从A1到A11与B1到B11相加的结果就已经在C1到C11单元格中了,是不是非常方便呀!
在我们日常数据处理中,在不同的Excel表之间进行数据引用是很平常的事。比如工会员工信息,要从另外一张人员基本信息中提取相关的基本信息时,就需要跨表引用。
笔者在编制助记码表时,根据Unicode编码,就需要从基本的码表文件中引用相应的五笔码和拼音码,由于两边的顺序并不一致,因此用到了函数vlookup,这个函数的第2个参数就是数据表中的一个区块,如图所示。
在F列中,根据B列的Unicode编码取得相应的拼音码,因此需要从基本的码表文件码表.xlsx引用相应的编码。由于Excel2010打开多个文档时,并不显示成两个窗口,因此需要在视图标签下,点全部重排,在弹出的对话框中选择垂直并排,这样两个不同的文档就可以并排显示了,此时要从另外一个文件中引用数据,就很方便,在屏幕上可以同时看到,并且可以直接操作并看到结果。因此在F列中编制vlookup相关的参数就很方便。
如果要进行数据对照,还可以选中视图下的同步滚动,这样当两个表的行数据相同时,进行数据对比也很方便。
二 : 加载宏(Addin)使用方法
Office VBA Addin加载宏是1种使用VBA编写的程序,它通过加载设置,可以随Office程(www.61k.com)序启动而自动加载运行,是制作Excel自定义函数、Office菜单和功能区按钮、添加常用辅助功能的常用载体。
在Excel、PPT中都可以编制加载宏文件,Word则可以通过模板文件进行加载。根据版本和程序的不同,加载宏的文件类型也稍有区别,在2003版本中,Excel的加载宏扩展名是xla、PPT的加载宏扩展名是ppa;2007/2010版本中,Excel的加载宏扩展名是xlam,PPT的加载宏扩展名是ppam。其中低版本的加载宏可以在高版本的程序中使用,因此,只要代码具有通用性,可以在编制完成保存为低版本的加载宏文件,以便于在不同版本中使用。
它们的文件图标有别于普通的Excel或PPT文件,如下图所示:
加载宏文件有默认的存放路径,找到这个路径很容易,只要打开PPT程序,点击【另存为】命令,在打开的对话框中选择文件类型为【PPT Addin】或【PPT加载宏】,对话框就会自动定位到默认的存放路径下,如下图所示。把加载宏文件存放到这个路径中(可以在对话框中的地址栏中复制这个路径,然后在浏览器中打开),然后参照后面的操作即可使用加载宏程序了。
首先,确保你的程序中的“宏”的安全性级别在中级或中级以下,有关宏的安全性设置可参考:
安全性级别设置在要求范围内之后,加载宏的具体加载方法如下:
以PPT2010程序为例,加载的方法如下:
依次点击【文件】(2007版中点击【Office按钮】)——【选项】——【加载宏】——右下角【管理】下拉列表中选择【PowerPoint加载项】——点击【转到】——在打开的【加载宏】对话框中勾选列表中出现的加载宏文件——点击【关闭】完成。如下图所示。如果你添加了正确的加载宏文件,但是下图中编号6所在的【可用加载宏】列表框中仍无显示,最可能的原因是宏的安全性级别过高,务必设置为中级或中级以下方可。
上述加载操作完成后,在PPT的功能区中点击【加载项】选项卡,就会在功能区面板上显示加载宏所生成的菜单,点击菜单即可运行相应程序,如下图所示。
如果您的功能区中没有显示“加载项”这个选项卡,是由于Office选项当中没有打开。可以从【文件】(2007中为【Office按钮】)——【选项】——【自定义功能】中勾选这个选项卡,选项卡名称通常为“加载项”,也有可能是“Addins”。如下图所示:
2007版本和2010版本操作基本相同。在2003版本中操作方法更简单:在菜单栏上依次单击【工具】——【加载宏】——在出现的【加载宏】对话框中勾选列表中出现的加载宏文件——点击【关闭】完成。如下图所示。如果你添加了正确的加载宏文件,但是下图中【可用加载宏】列表框中仍无显示,最可能的原因是宏的安全性级别过高,务必设置为中级或中级以下方可。
加载操作完成后,也会在PPT的菜单栏上生成菜单,如下图所示:
上述操作一次性完成后无需再次操作,程序每次打开时会自动进行加载,每次打开程序都能直接使用加载宏所生成的菜单,十分方便。如果要卸载,也只需要在【加载宏】对话框中取消勾选相应的加载宏文件就可以。
目前在我博客中发布过的几个加载宏:
Excel加载宏:
PPT加载宏:
Word加载宏:
三 : EXCEL宏的使用
EXCEL宏的使用
一、 选中单个单元格
Range(“<单元格地址>“).Select
例:Range("C9").Select ‘选中“C9”单元格
二、 选中多个单元格
Range(“<单元格地址>:<单元格地址>[,<单元格地址>??]”).Select
例:Range(“A1:B2”).Select ‘选中“A1”、“A2”、“B1”、“B2”四个连续的单元格
Range(“12:12”).Select ‘选中第12行
Range(“B:B”).Select ‘选中第B列
Range(“A1:A2,B7,2:2”).Select ‘选中“A1”、“A2”、“B7”五个不连续的单元格和第二行
Cells.Select ‘选中当前SHEET中的所有单元格
Rows("<行地址>:<行地址>").Select ‘选中整行
Columns("<列地址>:<列地址>").Select ‘选中整列
例:Rows(“2:2”). Select ‘选中第2行
Rows(“2:5”). Select ‘选中2到5行
Columns("A:A").Select ‘选中A列
Columns("E:B").Select ‘选中E到B列
三、 设置活动单元格
Range("<单元格地址>").Activate
注:设置活动单元格与选中单元格类似,不同之处就是
后者在选中指定的单元格之前会将在此前已被选中的单元格取消掉。
前者在设置之前不会取消已选中的单元格,如果此时操作的单元格不是被选中的单元格,这时他实现的功能与选一个单元格相同。
四、 给活动的单元格赋值
ActiveCell.FormulaR1C1 = <值>
例:Range("A1").Select
ActiveCell.FormulaR1C1 = "Name"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Age"
Range("A2:B3").Select
Range("A2").Activate
ActiveCell.FormulaR1C1 = " BUG"
Range("B2").Activate
ActiveCell.FormulaR1C1 = "12"
Range("A3").Activate
ActiveCell.FormulaR1C1 = "Archer"
Range("B3").Activate
ActiveCell.FormulaR1C1 = "37"
五、 得到指定单元格中的值
Range("<单元格地址>").Text
六、 插入单元格
Selection.Insert Shift:=<XlDirection值>
Selection.EntireRow.Insert
Selection.EntireColumn.Insert
例:Selection.Insert Shift:=xlToRight ‘在当前选中单元格的位置插入单元格并将当前选中的单元格向右移动 Selection.Insert Shift:=xlDown ‘在当前选中单元格的位置插入单元格并将当前选中的单元格向下移动 Selection.EntireRow.Insert ‘在当前选中单元格的上面插入一行
Selection.EntireColumn.Insert ‘在当前选中单元格的左侧插入一列
七、 设置字体属性
1. 设置字体名称和大小
Selection.Font.Name = <字体名称>
Selection.Font.Size = <字号>
例:Selection.Font.Name = "隶书"
Selection.Font.Size = 15
2. 设置字体样式
Selection.Font.Bold = <True / False> ‘加粗
Selection.Font.Italic = <True / False> ‘斜体
Selection.Font.Underline = < XlUnderlineStyle(下划线样式)> ‘下划线
XlUnderlineStyle(下划线样式):
xlUnderlineStyleDouble ‘双下划线
xlUnderlineStyleDoubleAccounting ‘会计用双下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度) xlUnderlineStyleNone 没有下划线
xlUnderlineStyleSingle ‘单下划线
xlUnderlineStyleSingleAccounting ‘会计用单下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度)
3. 设置字体的颜色
Selection.Font.ColorIndex = <0到56之间的数字>
Selection.Font.Color = <RGB值>
4. 设置字体的特殊效果
Selection.Font.Strikethrough = <True / False> ‘删除线
Selection.Font.Superscript = <True / False> ‘上标
Selection.Font.Subscript = <True / False> ‘下标
八、 清空选中单元格里的内容
Selection.ClearContents
例:Range(“A1:A2,B7,2:2”).Select ‘选中“A1”、“A2”、“B7”五个不连续的单元格和第二行
Selection.ClearContents ‘清空“A1”、“A2”、“B7”五个不连续单元格中的所有内容
九、 设置选中单元格的边线属性
XlBordersIndex(边线):
xlEdgeLeft '单元格左边线
xlEdgeTop ‘单元格上边线
xlEdgeRight ‘单元格右边线
xlEdgeBottom ‘单元格下边线
xlDiagonalDown ‘单元格左上右下斜线
xlDiagonalUp ‘单元格左上右下斜线
xlInsideVertical ‘多个单元格内垂直线
xlInsideHorizontal ‘多个单元格内水平线
1. 设置边线的类型
Selection.Borders(<边线>).LineStyle = < XlLineStyle(边线类型)> XlLineStyle(边线类型):
xlLineStyleNone ‘无样式
xlContinuous ‘单线
xlDash ‘破折号线(间隔线)
xlDashDot ‘破折号 点线
xlDashDotDot ‘破折号 点 点线
xlDot ‘点线
xlDouble ‘双横线
xlSlantDashDot ‘斜点线
2. 设置边线的宽度
Selection.Borders(<边线>).Weight = <XlBorderWeight(边线的宽度值)> XlBorderWeight(宽度值):
xlHairline ‘极细
xlThin ‘细
xlMedium ‘中等
xlThick ‘粗
3. 设置边线的颜色
Selection.Borders(xlEdgeLeft).ColorIndex = <0到56之间的数字> Selection.Borders(xlEdgeLeft).Color = <RGB值>
十、 删除选中的单元格
Selection.Delete <XlDirection值>
Selection.EntireRow.Delete
Selection.EntireColumn.Delete
例:Selection.Delete Shift:=xlToLeft ‘删除选中的单元格,并将已删除单元格所在位置右面的单元格向左移动 Selection.Delete Shift:=xlUp ‘删除选中的单元格,并将已删除单元格所在位置下面的单元格向上移动 Selection.EntireRow.Delete ‘删除选中单元格所在的行
Selection.EntireColumn.Delete ‘删除选中单元格所在的列
十一、设置单元格背景色及图案
1. 背景色
Selection.Interior.ColorIndex = <0到56之间的数字>
Selection.Interior.Color = <RGB值>
2. 图案样式
Selection.Interior.Pattern = <Constants(图案样式)>
Constants(图案样式):
xlSolid '实心
xlGray75 '75% 灰色
xlGray50 '50% 灰色
xlGray25 '25% 灰色
xlGray16 '12.5% 灰色
xlGray8 '6.25% 灰色
xlHorizontal '水平 条纹
xlVertical '垂直 条纹
xlDown '逆对角线 条纹
xlUp '对角线 条纹
xlChecker '对角线 剖面线
xlSemiGray75 '粗 对角线 剖面线
xlLightHorizontal '细 水平 条纹
xlLightVertical '细 垂直 条纹
xlLightDown '细 逆对角线 条纹
xlLightUp '细 对角线 条纹
xlGrid '细 水平 剖面线
xlCrissCross '细 对角线 剖面线
3. 图案颜色
Selection.Interior.PatternColorIndex = <0到56之间的数字>
Selection.Interior.PatternColor = <RGB值>
十二、返回工作表中的行数
Sheet1.UsedRange.Rows.Count ‘返回从最小已输入内容的行号到最大已输入内容的行号之间的行数 Sheet1.UsedRange.Rows(Sheet1.UsedRange.Rows.Count).Row ‘最大已输入内容的行号
十三、得到当前EXCEL的文件名
ThisWorkbook.Path ‘文件路径
ThisWorkbook.Name ‘文件名
ThisWorkbook.FullName ‘全路径
十四、批注的操作
1. 添加批注
AddComment([Content])
例:Range("A1").AddComment ("Writes the content in here!")
2. 修改批注内容
Comment.Text
例:Range("B1").Comment.Text Text:= "Writes the content in here!"
3. 显示/隐藏批注
Comment.Visible = <True/False>
4. 删除批注
ClearComments
例:Selection.Range("B1").ClearComments
5. 选中批注
Comment.Shape.Select True
例:Range("D8").Comment.Shape.Select True
6. 改变批注大小和位置
Selection.ShapeRange.ScaleWidth <宽度比例>, msoFalse, <MsoScaleFrom>
Selection.ShapeRange.ScaleHeight <高度比例>, msoFalse, <MsoScaleFrom>
例:Selection.ShapeRange.ScaleWidth 1.5, msoFalse, msoScaleFromTopLeft ‘每次增加5%的宽度 Selection.ShapeRange.ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft ‘每次减少6%的宽度 Selection.ShapeRange.Left = <左边距>
Selection.ShapeRange.Top = <上边距>
Selection.ShapeRange.Width = <宽度值>
Selection.ShapeRange.Height = <高度值>
十五、剪切、复制、粘贴
Selection.Cut ‘剪切
Selection.Copy ‘复制
ActiveSheet.Paste ‘粘贴
例:Range("A1").Select
Selection.Cut
Range("A2").Select
ActiveSheet.Paste
Selection.Copy
Range("A3").Select
ActiveSheet.Paste
十六、选择性粘贴
Selection.PasteSpecial <option>
十七、改变列宽
Selection.ColumnWidth = <宽度值> ‘指定列宽
例:Columns("A:A").Select
Selection.ColumnWidth = 30 ‘改变已选列的宽度
EntireColumn.AutoFit ‘自动改变列宽
例:Columns("C:C").EntireColumn.AutoFit ‘根据C列的内容自动改变列的宽度
对于什么是宏有许多种解释,总的来说宏是使任务自动化包括在Sub和End Sub之间的一组指令的集合,Excel97的宏就是贮存在 Visual Basic 模块中的VBA程序。只有充分使用宏,才能深入理解Excel97数据管理各个方面的精妙之处。在Excel97应用中怎样使用宏呢?根据平常实际应用经验,我从以下三个方面谈一点心得。
一、建立宏
直接建立宏有两种途径:
㈠使用Excel97提供的宏记录器建立宏
运用宏记录器记录宏基本可分为三个步骤,第一步:启动宏记录器。从Excel97工具菜单中选取“宏”,然后选中“录制新宏”选项,从弹出的“录制新宏”窗口中,用户可以为即将录制的宏定义一个便于识别的名字和快捷键,并确定宏的保存地址,其中宏名为必选项,若用户未定义宏名,宏记录器将自动为所录制的宏定义一个默认的名字,快捷键和保存地址由用户根据需要自由设定,宏记录器默认用户所录制的宏保存在当前工作簿。第二步:执行希望录制的动作。这是使用宏记录器建立宏的关键,因为在这个步骤中,用户每一个完成的动作都将被宏记录器所录制,所以,为了使宏达到简捷、实用的目的,用户的动作一定要精炼、准确,尽可能地用最少的动作完成预定的任务。第三步:停止记录。
Excel97的宏记录器具有一定的智能判断能力,只记录已完成的动作,不会记录用户选择错误或修改错误的过程。例如,它不会记录打开对话框的菜单命令,直到单击了对话框上的“确定”为止,若用户打开对话框后选择了“取消”,宏记录器则不会录制该动作。在录制宏的过程中,用户不能离开Excel97的工作环境,否则,用户的动作将不能被记录。
举一个简单的例子:在Excel97中打开一个名为“通讯录.dbf”的数据库文件,运用宏记录器建立一个名为“打开数据库”的宏,具体操作为:
⒈进入Excel97,新建一个工作簿;
⒉将工作簿命名为“打印通讯录”(若准备在工作簿中使用宏应养成为新建工作簿命名的操作习惯);
⒊启动宏记录器,并定义宏名为“打开数据库”;
⒋运用Excel97的打开文件向导打开数据库文件“通讯录.dbf”;
⒌在工具菜单的“宏”选项下选择“停止记录”,或单击“停止录制”按钮。
通过上面的操作并稍加调整得到的宏代码为:
Sub 打开数据库()
Workbooks.Open FileName:="通讯录.dbf"
End Sub
在文件名前可以包含详细路径,这是由打开文件时选择路径的动作所决定的。
㈡使用Visual Basic编辑器建立宏
Excel97的Visual Basic编辑器的功能十分强大,它不仅可以建立宏,还可以建立用户自定义函数、用户自定义窗体和过程。从工具菜单的“宏”选项下选择“Visual Basic编辑器”即可进入编辑窗口,在通过编辑器建立宏的过程中,可以使用拷贝、复制、粘贴、删除、插入、查找、替换、缩进、凸出等所有的文本编辑功能,同时编辑器还提供了自动语法检测和提示功能,所以,即使从未涉及宏语言Visual Basic for Application的用户,也能够在很短的时间内掌握并熟练使用Visual Basic编辑器。
使用Visual Basic编辑器建立宏基本也可以分为三个步骤,即插入模块、编写宏代码、关闭编辑器并返回Excel97。例如,要将打开的数据库文件“通讯录.dbf”中的记录运用表格的方式打印出来,建立一个名为“打印通讯录”的宏,可以分为以下步骤:
⒈根据数据库的字段建立打印页面。在本例中数据库文件“通讯录.dbf”有六个字段:序号、联系人、联系地址、联系电话、邮政编码、备注,其中序号是第一个字段,也是数据库记录的唯一标识,数据库记录按序号值进行升序排列,文件打开后,序号值存放在Excel97工作表的第A列中。
⒉将打印页面工作表命名为“通讯录打印页面”,并根据页面大小确定每页打印的记录数量(在此设为30)。
⒊分析宏运行过程中应注意的要点。在此例中首先应判断数据记录的个数,以确定需要打印的页数;其次,在打印之前应选择对应的数据填入打印页面;第三,在连续打印的过程中程序应给予适当的提示,允许用户整理打印机或中途退出打印过程。
⒋进入Visual Basic编辑器,插入模块,编写宏代码。在编写宏代码的过程中可以在代码中加注,以增加宏代码的可读性。根据以上分析,完成通讯录打印过程的宏代码如下:
Sub 打印通讯录()
Dim Value, no1, no2, 页数 As Integer
Dim sss, sss1, sss2, sss3 As String
Dim qqq As Range
Windows("通讯录.dbf").Activate
'计算A列中值大于0的单元格个数,即记录个数
no1 = 2 '在"通讯录.dbf"中第一行为字段标题,计数从第二行开始
Do While no1 > 0
sss = "a" & no1
Value = Range(sss)
If Value > 0 Then
no1 = no1 + 1
Else
Exit Do
End If
Loop
sss = Str(no1 - 2) 'no1的初始值为2,故no1-2为数据库的记录数
'记录数除以每页的记录容量即页数
If (no1 - 2) / 30 = Int((no1 - 2) / 30) Then
页数 = (no1 - 2) / 30
Else
页数 = Int((no1 - 2) / 30) + 1
End If
sss1 = Str(页数)
no2 = 1
Do While no2 > 0
Windows("通讯录.dbf").Activate
'由于数据库有6个字段,故第1列至第6列为数据区域
Set qqq = Range(Cells((no2 - 1) * 30 + 2, 1), Cells(no2 * 30 + 1, 6)) qqq.Copy
Windows("打印通讯录.xls").Activate
Sheets("通讯录打印页面").Select
Range("A4").Select '选定打印页面数据区域的左上角
'将相应数据选择性粘贴到打印页面中
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False
sss2 = Str(no2)
sss3 = "数据库中共有" + sss + "条记录,共" + sss1 + "页,目前表中为第" _ + sss2 + "页数据,打印吗?"
www = MsgBox(sss3, 68, "提示")
'当从提示框中选择“否”时用户可中途退出打印过程
If www = vbNo Then
Exit Do
Else
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, _
Copies:=1, Collate:=True
End If
no2 = no2 + 1
Loop
End Sub
程序执行结果如图所示。
实际上任何文本编辑软件都可以编写宏代码,只是必须将所编写的宏代码粘贴到Excel97的宏模块中才能运行。
以上两种建立宏的方法各有优劣,使用宏记录器建立宏简单、方便,所见即所得,可以省略输入宏代码的过程,基本不用了解宏语言的语法和结构,但不够灵活,不够简捷,所以,运用范围受到限制;使用编辑器建立宏则对用户层次要求较高,要求用户能够熟练使用宏语言Visual Basic for Application,运用这种方法建立宏不仅可以处理复杂的运算过程,同时可以极大地发挥Excel97的各项功能。因此,在实际应用中,应将两种方式结合运用,发挥其各自的长处,才能做到事半功倍。
二、 优化宏
宏建立以后需要经过调试和优化方可运用。宏的调试主要是找出语法上的缺陷,在建立宏的同时可以一并完成,而优化则需要相当长的过程,甚至在程序已经投入使用后还需要不断优化。宏的优化大致可从以下几个方面着手:
㈠消除冗余,提高宏代码的运行效率。
消除冗余是所有程序开发人员应该遵循的一般准则。针对Excel97应用而言,建立宏应充分运用Excel97本身强大的数据处理功能,将某些数据计算的工作交给工作表或单元格去完成,这样可以在很大程度上减少宏代码的数量,缩短程序的开发周期。另外,在处理相同任务的时候,Excel97本身的公式或函数的计算速度也远远高于宏代码的执行速度,这一点在用户所开发的程序很大或计算机的运算速度较低时尤为明显。
㈡最大限度地提高宏代码的执行速度。
Excel97本身没有提高宏代码执行速度的命令,根据笔者的实践体会,要提高宏代码的执行速度大致可从三个方面考虑:
⒈消除屏幕闪烁现象。
在宏的执行过程中,特别是宏在不同工作簿或工作表之间反复调用数据的时候,会出现屏幕闪烁的现象。如上例“打印通讯录”宏在“通讯录.dbf”和“打印通讯录.xls”之间来回切换,屏幕的闪烁大大影响了宏代码的执行速度。在编写宏代码的时候,加入关闭屏幕更新命令,可以有效地防止屏幕闪烁。例如我们可将“打印通讯录”宏作如下修改:
Sub 打印通讯录()
Application.ScreenUpdating = False
??
Application.ScreenUpdating = True
End Sub
这样将看不到宏的执行过程,但宏的执行速度加快了。值得注意的是:Excel97对屏幕更新的默认值是True,所以在宏执行结束时需要恢复屏幕更新的默认设置。
另外,在同一工作表中的不同区域进行数据处理时也会出现屏幕闪烁现象,这时只需从窗口菜单中选择“冻结拆分窗口”,通过调整行高和列宽将拆分窗口大小调整为计算机屏幕大小后,在执行宏的过程中即可消除屏幕闪烁现象。
⒉尽量少占用计算机内存。
首先,在程序中应少使用剪贴板,因为在剪贴板上放置数据会大量占用计算机的内存,从而降低机器的性能,影响代码的执行速度。 第二,在编写宏代码时应养成事先声明变量的习惯。因为,在程序中使用变量而不事先声明,Excel97会默认变量类型为Variant ,Variant是一种特殊的数据类型,除了定长 String 数据及用户定义类型外,可以包含任何种类的数据,但是它所占用的内存空间也远远高于其他数据类型。如在“打印通讯录”宏中声明变量的语句为:
Dim Value, no1, no2, 页数 As Integer
Dim sss, sss1, sss2, sss3 As String
以上两个语句共声明八个变量,较之不声明变量节省内存空间104个字节,在程序较小、使用变量较少时,这种方法对执行速度的影响并不明显,但若程序很大、使用变量很多、计算机的运算速度较低时,使用这种方法对提高程序的执行速度则是非常有效的。
第三,在程序中要谨慎运用数组。为了尽可能使代码简洁明了,应将声明的数组指定为某一种数据类型。数组变量的最大值,是以操作系统与有多少可用内存为基础的,若使用的数组大小超过了系统中可用内存总数,则必须从磁盘中来回读写数据,从而使宏的运行速度变得很慢。
第四,对使用Load语句调入内存的VBA对象,当确定在后面的程序中已不再使用时,应及时使用Unload语句将这个对象从内存中删除,以释放内存空间。
⒊简化VBA语句的结构。
由于任何一个属性、方法或层次对象的引用都需要Excel97花费一定的时间来处理,因此在对属性、方法或层次对象的引用要力求简化。例如可以将“打开数据库”宏的语句改写为:
Application.Workbooks.Open FileName:="通讯录.dbf"
虽然这种写法同样可以运行,但与原来写法比较增加了VBA对象的引用层次,从而增加了程序的处理时间,从理论上来说降低了程序的执行速度。
㈢将宏的执行动作模块化。
VBA面向对象编程的特点使宏的模块化变得尤为方便。所谓模块化就是将宏分解为若干互相独立的宏子程序,每个子程序只包含一个或几个完整的执行动作。由于Excel97的宏可以互相嵌套,在一个宏中调用其他的宏子程序只需在宏中嵌入宏子程序的名字即可,因此,可以将一些较小的宏连在一起创建一个较大的宏,以完成相对复杂的任务。在宏的嵌套中必须注意:一定要明确指定各个宏子程序的作用范围,即必须说明宏子程序作用的工作簿的工作表或工作表中的数据区域,否则将会出现数据紊乱导致臆想不到的后果。
将宏的执行动作模块化具有很多优点,第一,便于宏代码的编写、调试、修改和维护;第二,程序完成后并不是一成不变的,要求随着业务的变化而不断的完善和升级。模块化增加了程序代码的可读性,便于应用程序的完善和升级。第三,完成性质相同任务的宏可以作为公共子程序被反复多次调用,从而降低冗余。另外,有经验的程序开发人员往往积累一些带有共性的小工具,在开发新的应用程序时可以直接使用,进行拼装,既省时又省力,可提高程序的开发效率。
例如可以将“打印通讯录”宏中的打印过程独立出来,变成如下的宏子程序:
Sub 打印 ()
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=True
End Sub
宏子程序“打印”执行的动作是打印工作表的第一页,可以在任何执行相同动作的打印宏中予以调用。
三、 运行宏
建立宏和优化宏两个步骤都是为运行宏所做的准备工作,使用宏的最终目的是要通过运行宏来实现的。运行宏的方式一般分为以下四种: ㈠使用宏对话框运行宏
使用宏对话框运行宏可分为三个步骤:
⒈从工具菜单的宏选项中选择“宏”弹出如图所示的宏对话框;
⒉从宏名列表中选择需要运行的宏;
⒊用鼠标左键单击“执行”按钮。
这是运行宏最普通的方式,具有简单、直观、易于掌握的优点。
㈡通过自定义的快捷键运行宏
宏的快捷键可以通过两种方式定义,一是在运用宏记录器建立宏时从录制宏对话框中定义;二是从上图所示宏对话中选择“选项”后定义。快捷键定义后,运行宏的时候需要同时按下Ctrl和所定义的快捷键。这是运行宏最直接的方式。
㈢通过载体运行宏
所谓载体就是能够被指定宏的Excel97对象。一般而言,可以充当载体的对象有:工作簿、工作表、工具栏按钮、图表、图片、文本框、艺术字以及各项窗体控件。
⒈运用工作簿和工作表作为宏的载体。
工作簿和工作表作为宏的载体时,并不能直接为其指定宏,需要通过事件的触发来运行宏。在此仅以工作表为例,如将宏“打印通讯录”
指定给工作表“通讯录打印页面”,可以通过激活工作表事件来实现。代码如下:
Private Sub Worksheet_Activate()
打印通讯录
End Sub
要运行“打印通讯录”宏只需激活工作表“通讯录打印页面”即可。这样的工作表事件共有七个,除了以上激活工作表事件外,还有: BeforeDoubleClick 事件(双击工作表产生的事件);
BeforeRightClick 事件(鼠标右键单击工作表时产生的事件);
Deactivate 事件(工作表从活动状态转为非活动状态时产生的事件);
Calculate 事件(当数据源更新,图表重新绘制之后产生的事件);
Change 事件(当更改工作表中的单元格或外部链接引起单元格的值改变时产生的事件);
SelectionChange 事件(工作表上的选定区域发生改变时产生的事件)。
每个事件都有其特定的触发条件,这样就为宏的灵活运用提供了多种有效途径。
⒉运用自定义工具栏按钮作为宏的载体。
运用自定义工具栏按钮作为宏的载体,可通过以下步骤来实现:
① 将鼠标指针指向任何显示的工具栏,单击右键,在出现的快捷菜单中选择“自定义”选项,弹出自定义窗口;
② 从自定义窗口中选择“命令”页面;
③ 在命令页面的“类别”列表中选择“宏”,将“命令”列表中出现的自定义按钮拖曳到工具栏上;
④ 用鼠标右键单击工具栏上的自定义按钮,从弹出的“指定宏”窗口列表中选择宏,最后单击“确定”按钮。
若要运行该宏单击工具栏上的自定义按钮即可。
⒊运用图表、图片、文本框、艺术字等绘图对象作为宏的载体。
建立绘图对象有两种方法,一是从Excel97插入菜单中插入图表、图片或艺术字,二是从视图菜单中打开绘图、图表、图片或艺术字工具栏,然后通过工具栏建立绘图对象。将宏指定给绘图对象的操作过程如下:
① 选中的绘图对象;
② 用鼠标右键单击选中的绘图对象,从快捷菜单中选择“指定宏”选项;
③ 从弹出的“指定宏”窗口列表中选择宏后单击“确定”按钮。
从此,每当鼠标左键单击该对象时都会运行指定的宏。
⒋运用窗体控件作为宏的载体。
灵活地运用窗体控件是建立应用程序主控菜单的基础。
运用窗体控件作为宏的载体可通过两种途径:
①从视图菜单中打开窗体工具栏,将可以使用的窗体控件拖曳到Excel97工作表上,然后重复为绘图对象指定宏的操作过程,通过上述操作,作为宏的载体的窗体控件将“浮”在Excel97工作表上,用鼠标单击该控件即可运行指定的宏。
②通过Visual Basic编辑器建立自定义窗体,将自定义窗体控件作为宏的载体。
例如:建立如图所示名为“通讯录处理程序”的自定义窗体,然后通过“打开数据库”和“打印通讯录”按钮分别运行“打开数据库”和“打印通讯录”两个宏,具体操作步骤为:
第一步,进入Visual Basic编辑器;
第二步,通过Visual Basic编辑器的插入菜单添加用户窗体;
第三步,设置窗体属性,在本例中将窗体的Cption属性和(名称)属性都设置为“通讯录处理程序”;
第四步,为窗体添加控件,同时设置控件属性,窗体控件的属性很多,Excel97为每个控件属性都定义了一个默认值,因此,用户不必对每一个属性都重新设置,只需设置用户认为需要更改的属性即可;
第五步,通过控件的Click 事件指定宏,如将宏“打印通讯录”指定给控件“打印通讯录”的代码如下:
Private Sub 打印通讯录_Click()
Run ("打印通讯录")
End Sub
注意:在用户自定窗体的类模块中不能直接调用Excel97宏,必须使用Run 方法,在使用Run 方法调用宏的过程中,宏名应包括在括号和引号内。
Excel97所提供的通过载体运行宏的特性,使用户在开发管理程序的时候更加得心应手。
㈣自动运行的宏
在Excel5中有四个自动执行的宏:Auto_Open、 Auto_Close、 Auto_Activate 和 Auto_Deactivate,Excel97为了保持向后的兼容性对这四个宏予以了保留。
在本文所列举的通讯录处理程序中,有一个Auto_Open宏的应用例子:
Sub auto_open()
通讯录处理程序.Show
End Sub
通过此宏的应用,打开文件“打印通讯录.xls”将同时激活“通讯录处理程序”窗体,使Excel97的应用更加自动化。这只是运用Auto_Open宏的一个最简单的例子,实际上,Auto_Open宏在设置密码、初始化工作簿以及定义Excel97工作环境等方面都能发挥极大的作用。
至此,一个较为完整的通讯录处理程序编制完毕。在实际工作中,用户所处理的业务会远远复杂于本文所列举的例子,但具体操作过程大致不会超出上面所述范畴。
需要说明的是:虽然Excel97保留了这四个宏,但是Excel97新增加的自动响应事件的功能却要强大得多。Excel97常用的自动响应事件有46个,以上四个宏分别被Open事件、WorkbookBeforeClose 事件、Activate事件和Deactivate事件所代替。
Open事件是打开工作簿时自动响应的事件。
WorkbookBeforeClose 事件是当任一打开的工作簿要关闭时立即产生的事件。
Activate事件是激活一个工作簿、工作表、图表或嵌入式图表时自动响应的事件。
Deactivate事件是图表、工作表或工作簿从活动状态转为非活动状态时自动响应的事件。
用户掌握和熟练使用Excel97事件,能在Excel97的应用方面达到一个新的境界。
读书人推崇开卷有益,在Excel97的应用中同样包含“温故而知新”的哲理,博大精深的Excel97,为我们提供了许许多多神奇的功能,需要我们在日常应用中去不断地探索和挖掘。 第三步,设置窗体属性,在本例中将窗体的Cption属性和(名称)属性都设置为“通讯录处理程序”;
第四步,为窗体添加控件,同时设置控件属性,窗体控件的属性很多,Excel97为每个控件属性都定义了一个默认值,因此,用户不必对每一个属性都重新设置,只需设置用户认为需要更改的属性即可;
第五步,通过控件的Click 事件指定宏,如将宏“打印通讯录”指定给控件“打印通讯录”的代码如下:
Private Sub 打印通讯录_Click()
Run ("打印通讯录")
End Sub
注意:在用户自定窗体的类模块中不能直接调用Excel97宏,必须使用Run 方法,在使用Run 方法调用宏的过程中,宏名应包括在括号和引号内。
Excel97所提供的通过载体运行宏的特性,使用户在开发管理程序的时候更加得心应手。
㈣自动运行的宏
在Excel5中有四个自动执行的宏:Auto_Open、 Auto_Close、 Auto_Activate 和 Auto_Deactivate,Excel97为了保持向后的兼容性对这四个宏予以了保留。
在本文所列举的通讯录处理程序中,有一个Auto_Open宏的应用例子:
Sub auto_open()
通讯录处理程序.Show
End Sub
通过此宏的应用,打开文件“打印通讯录.xls”将同时激活“通讯录处理程序”窗体,使Excel97的应用更加自动化。这只是运用Auto_Open宏的一个最简单的例子,实际上,Auto_Open宏在设置密码、初始化工作簿以及定义Excel97工作环境等方面都能发挥极大的作用。
至此,一个较为完整的通讯录处理程序编制完毕。在实际工作中,用户所处理的业务会远远复杂于本文所列举的例子,但具体操作过程大致不会超出上面所述范畴。
需要说明的是:
在Excel里通过使用宏我们可以实现许多普通方法无法实现的功能!一个简单的例子就足以说明这一点:
在Excel里的sheet1 的SelectionChange事件里写入如下代码:
MsgBox Selection.Cells.Count
那么在你点选单元格的时候,excel会弹出提示框告诉你所选取的单元格的数目。整个过程的完整代码为:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Selection.Cells.Count
End Sub
是不是很奇妙!在Excel 里编写宏的语言是vba 语言(visual basic for application),学好它对你更好的使用Excel绝对大有裨益!很多初学者都在这方面开始努力,但是在自己独立编写宏的时候也常常碰到一些问题。而且这些问题在excel的帮助文件里很难找到答案。我在这里列举几个出现频率较高的问题与大家一起分析,希望能带给大家一些启发。
1、如何隐藏宏的执行过程
一个宏编写完后,执行的过程就是一行一行运行代码的过程,这时屏幕会反映每一个步骤所产生的变化。这样不仅看上去不美观而且会暴露编程思路。更重要的是这样也会降低系统的执行速度!所以,我们应该屏蔽掉这个过程。方法:在你写的宏代码的第一行前加上一句:Applicatiion.screenupdate=False 。然后在你的代码的最后加上:Applicatiion.screenupdate=True 。这样就可以达到你屏蔽程序执行过程的目的了。
2、如何在宏代码里使用工作表函数
在Excel里有很多函数使用起来很方便,譬如;sum;average;min;max.但是工作表函数
是不能在宏代码里直接使用的。它们和vba语言中的函数是不一样的。Vba中的函数例如val,mid在工作表里也不能通用。所以我在这里讲解一下在vba语言里调用工作表函数的方法。让一个变量得到单元格A1到B5的总和(变量设为X) X=SUM(RANGE("A1:B5"))的写法明
显是行不通的;正确写法是X=APPLICATION.WORKSHEETFUNCTION.SUM(RANGE("A1:B5"))。也就是说必须通过 Application 对象的 Worksheetfunction 属性来间接调用工作表函数!
3、单元格区域与数组
我们有时会需要将一个区域的值赋予一个数组或者正好相反是要将一个数组得值填充
到一个区域,例如我们要将区域A2到D4的所有单元格中的结果存入一个数组:首先,我们应该定义一个数组变量DATA,因为EXCEL工作表示二维的,故而使用二维的数组变量也比较合适! 由于A2:D4这个区域有3行,4列所以:
DIM DATA(1TO 3,1 TO 4)
FOR A=1 TO 3
FOR B=1 TO 4
DATA(A,B)=RANGE("A2:D4").CELLS(A,B).VALUE
NEXT B
NEXT A
这样DATA变量就拥有了该区域的所有单元格结果,通过MSGBOX DATA(1,1)类似的方法里可以一个个的验证。之后如果你要将该变量的结果赋予一个区域例如:A6:D8;可以用如下代码:RANGE("A6:D8").VALUE=DATA。的例子就足以说明这一点:
在Excel里的sheet1 的SelectionChange事件里写入如下代码:
MsgBox Selection.Cells.Count
那么在你点选单元格的时候,excel会弹出提示框告诉你所选取的单元格的数目。整个过程的完整代码为:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Selection.Cells.Count
End Sub
是不是很奇妙!在Excel 里编写宏的语言是vba 语言(visual basic for application),学好它对你更好的使用Excel绝对大有裨益!很多初学者都在这方面开始努力,但是在自己独立编写宏的时候也常常碰到一些问题。而且这些问题在excel的帮助文件里很难找到答案。我在这里列举几个出现频率较高的问题与大家一起分析,希望能带给大家一些启发。
1、如何隐藏宏的执行过程
一个宏编写完后,执行的过程就是一行一行运行代码的过程,这时屏幕会反映每一个步骤所产生的变化。这样不仅看上去不美观而且会暴露编程思路。更重要的是这样也会降低系统的执行速度!所以,我们应该屏蔽掉这个过程。方法:在你写的宏代码的第一行前加上一句:Applicatiion.screenupdate=False 。然后在你的代码的最后加上:Applicatiion.screenupdate=True 。这样就可以达到你屏蔽程序执行过程的目的了。
2、如何在宏代码里使用工作表函数
在Excel里有很多函数使用起来很方便,譬如;sum;average;min;max.但是工作表函数
是不能在宏代码里直接使用的。它们和vba语言中的函数是不一样的。Vba中的函数例如val,mid在工作表里也不能通用。所以我在这里讲解一下在vba语言里调用工作表函数的方法。让一个变量得到单元格A1到B5的总和(变量设为X) X=SUM(RANGE("A1:B5"))的写法明
显是行不通的;正确写法是X=APPLICATION.WORKSHEETFUNCTION.SUM(RANGE("A1:B5"))。也就是说必须通过 Application 对象的 Worksheetfunction 属性来间接调用工作表函数!
3、单元格区域与数组
我们有时会需要将一个区域的值赋予一个数组或者正好相反是要将一个数组得值填充
到一个区域,例如我们要将区域A2到D4的所有单元格中的结果存入一个数组:首先,我们应该定义一个数组变量DATA,因为EXCEL工作表示二维的,故而使用二维的数组变量也比较合适! 由于A2:D4这个区域有3行,4列所以:
DIM DATA(1TO 3,1 TO 4)
FOR A=1 TO 3
FOR B=1 TO 4
DATA(A,B)=RANGE("A2:D4").CELLS(A,B).VALUE
NEXT B
NEXT A
这样DATA变量就拥有了该区域的所有单元格结果,通过MSGBOX DATA(1,1)类
Q: 我怎么才能让所有的工作簿都能使用我创建的宏?(邯郸 李贵璨)
A: 其中一种方式是先打开包含宏的工作簿。这样,同时打开的所有工作簿都可以使用这些宏。或者,你也可以将它们保存在一个私人工作簿中。如果你使用的是Excel 97至2003版本Office,你可以选择“工具”菜单中的“宏”|“录制新宏”。如果你使用的是Excel 2007,则应单击“开发工具”按钮,并点选“录制宏”;在“宏名”一栏中输入任意名称;点选表单中的“个人宏工作簿”;单击“确认”,然后在工作表中的任何一个单元格点“停”或“停止录制”按钮;关闭Excel,在询问是否要保存对“个人宏工作簿”的修改时,选择“是”;按Alt+F11打开VBA编辑器,Project Explorer窗口现在就会显示一个VBA Project、Personal.xls或Personal.xlsb列表(如图);将你的宏粘贴到Module 1上即可。
个人工作簿中的宏可以通用。
四 : 使用Excel中的“宏”功能
宏的概念,相信使用过WORD的人都会知道,她可以记录命令和过程,然后将这些命令和过程赋值到一个组合键或工具栏的按钮上,当按下组合键时,计算机就会重复所记录的操作。在实践工作中,它可以代替经常输入大量重复而又琐碎的数据,具体宏的定义方法如下:
A、打开工作表,在工作表中选中要进行操作的单元格;
B、用鼠标单击菜单栏中的“工具”菜单项,并从弹出的下拉菜单中选择“宏”子菜单项,并从随后弹出的下级菜单中选择“录制新宏”命令;
C、设定好宏后,我们就可以对指定的单元格,进行各种操作,程序将自动对所进行的各方面操作记录复制。
本文标题:excel使用加载宏-excel2017如何加载宏61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1