Excel里的宏有啥作用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel里的宏有啥作用?相关的知识,希望对你有一定的参考价值。
材料/工具:Excel2010
宏是一些指令集,每个人在制作表格的过程中也许会有多种功能,而一直重复做的话会非常繁琐,因此就可以通过宏录制来节约时间简化步骤,对于提高工作效率是非常有好处的。对于经常使用excel表格来工作的话,能有效地提高工作,让自己变得更轻松。
1、我们这里为每一行都填充第一个数字
2、那么直接点击导航栏中的视图,在这里能进行宏的定义。
3、接着选择使用相对引用,然后再点击录制。
4、接着对于宏进行命名和定义快捷键,这样会加快工作效率。
5、接着录制。然后在第一行里将所有的行都复制上第一个数字,填充好
6、接着点击停止录制,这样一个宏定义就做好了。
7、接着将鼠标点击第二行的第一列,这时候再点击查看宏,或者直接按住快捷键也能直接执行宏定义。
8、点击执行,如果自己有宏快捷键的话,直接按快捷键就很容易做好了,能很快地将表格做好,效率非常高。
参考技术A宏,就是把一些命令组织在一起,作为一个单独命令完成某种功能。宏可以简化步骤,提高工作效率。
1、现在以如下例子来演示如何设置宏,要为每一行都填充第一个数字,一共有七列,现在只有第一列有数字。
2、现在直接点击导航栏中的视图,选择宏,对宏进行定义。
3、然后点击使用相对引用,接着再点击录制。
4、对宏进行命名并为他制定快捷键,在后面使用的时候就可以直接用快捷键。
5、然后录制,在第一行里将所有的行都复制上第一个数字,填充好。
6、接着点击停止录制,现在,就设置好了一个宏。
7、接着将鼠标点击第二行的第一列,这时候再点击查看宏,或者直接按住快捷键也能直接执行宏定义。
8、继续点击执行,如果使用刚刚设置的快捷键,能很轻松的完成上述步骤,制作表格的效率非常高。
参考技术B 在介绍学习VBA之前,应该花几分钟录制一个宏。新术语:“宏”,指一系列EXCEL能够执行的VBA语句。
以下将要录制的宏非常简单,只是改变单元格颜色。请完成如下步骤:
1)打开新工作簿,确认其他工作簿已经关闭。
2)选择A1单元格。调出“常用”工具栏。
3)选择“工具”—“宏”—“录制新宏”。
4)输入“改变颜色”作为宏名替换默认宏名,单击确定,注意,此时状态栏中显示“录制”,特别是“停止录制”工具栏也显示出来。替换默认宏名主要是便于分别这些宏。
★ 宏名最多可为255个字符,并且必须以字母开始。其中可用的字符包括:字母、数字和下划线。宏名中不允许出现空格。通常用下划线代表空格。
5)选择“格式”的“单元格”,选择“图案”选项中的红色,单击“确定”。
6)单击“停止录制”工具栏按钮,结束宏录制过程。
※ 如果“停止录制”工具栏开始并未出现,请选择“工具”—“宏”—“停止录制”。
录制完一个宏后就可以执行它了。
1.4 执行宏
当执行一个宏时,EXCEL按照宏语句执行的情况就像VBA代码在对EXCEL进行“遥控”。但VBA的“遥控”不仅能使操作变得简便,还能使你获得一些使用EXCEL标准命令所无法实现的功能。而且,一旦熟悉了EXCEL的“遥控”,你都会奇怪自己在没有这些“遥控”的情况下,到底是怎么熬过来的。要执行刚才录制的宏,可以按以下步骤进行:
1)选择任何一个单元格,比如A3。
2)选择“工具”—“宏”—“宏”,显示“宏”对话框。
3)选择“改变颜色”,选择“执行”,则A3单元格的颜色变为红色。试着选择其它单元格和几个单元格组成的区域,然后再执行宏,以便加深印象。
1.5 查看录制的代码
到底是什么在控制EXCEL的运行呢?你可能有些疑惑.好,让我们看看VBA的语句吧.
1)选择“工具”—“宏”—“宏”,显示“宏”对话框。
2)单击列表中的“改变颜色”,选择“编辑”按钮。
此时,会打开VBA的编辑器窗口(VBE)。关于该编辑器,以后再详细说明,先将注意力集中到显示的代码上。代码如下:(日期和姓名会有不同)
Sub 改变颜色()
'
' 改变颜色 Macro
' xw 记录的宏 2000-6-10
'
'
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End Sub
将来会十分熟悉这种代码,虽然现在它们看上去像一种奇怪的外语。学习VBA或编程语言在某种程度上比较像在学习一种外语。
Sub 改变颜色():这是宏的名称。
中间的以“ '”开头的五行称为“注释”,它在录制宏时自动产生。
以With 开头到End With 结束的结构是With结构语句,这段语句是宏的主要部分。注意单词“selection”,它代表“突出显示的区域”(即:选定区域)。With Selection.Interior :它读作“选择区域的的内部”.这整段语句设置该区域内部的一些“属性”。
其中:
.ColorIndex = 3: 将该内部设为红色。注意:有一小圆点,它的作用在于简化语句,小圆点代替出现在With后的词,它是With结构的一部分。另外:红色被数字化为3.(红色警戒是否可称作:3号警戒,嗯?)有兴趣的话,你将3改为其他数字试试看。
.Pattern = xlSolid:设置该区域的内部图案。由于是录制宏,所以,虽然你并未设置这一项,宏仍然将其记录下来(因为在“图案”选项中有此一项,只是你为曾设置而已)。xlSolid表示纯色。
.PatternColorIndex = xlAutomatic:表示内部图案底纹颜色为自动配色。
End With:结束With 语句。
End Sub:整个宏的结束语
1.6 编辑录制的代码
在上一节,我们录制了一个宏并查看了代码,代码中有两句实际上并不起作用。哪两句?现在,在宏中作一个修改,删除多余行,直到和下面代码相同:
Sub 改变颜色()
'
' 改变颜色 Macro
' xw 记录的宏 2000-6-10
'
'
With Selection.Interior
.ColorIndex = 3
End With
End Sub
完成后,在工作表中试验一下。你会发现结果和修改前的状况一样。在With 语句前加入一行:
Range("A5").Select
试着运行该宏,则无论开始选择哪个单元格,宏运行结果都是使A5单元格变红.
现在可以看到,编辑录制的宏同样非常简单。需要编辑宏是因为以下三个方面的原因。一:在录制中出错而不得不修改。二:录制的宏中有多余的语句需要删除,提高宏的运行速度。三:希望增加宏的功能。比如:加入判断或循环等无法录制的语句。
1.7 录制宏的局限性
希望自动化的许多EXCEL过程大多都可以用录制宏来完成.但是宏记录器存在以下局限性.通过宏记录器无法完成的工作有:
1)录制的宏无判断或循环能力.
2)人机交互能力差,即用户无法进行输入,计算机无法给出提示.
3)无法显示EXCEL对话框.
4)无法显示自定义窗体.
1.8 小结
本课中,你已经掌握了VBA的一些基础知识,你会录制宏、编辑宏而且了解了录制宏的局限性.你很努力.并且已经为将来学习VBA甚至VB等编程语言打下了基础.关键是你已经了解了一个谜底,就是说,你了解了什么是编程.下面是些小练习,做完后才可以去玩哟.
思考:
1)VBA只能用于EXCEL吗?
2)VBA是基于哪种语言?
3)说说EXCEL和VBA的关系.
4)为什么要用宏?
第二课 处理录制的宏
2.1 为宏指定快捷键
你也许希望为经常使用的宏指定快捷键。快捷键是指键的组合,当其按下时执行一条命令。例如:CTRL+C
在许多程序中代表“复制”命令。当给宏指定了快捷键后,就可以用快捷键来执行宏,而不必通过“工具”菜单。
注意:当包含宏的工作簿打开时间,为宏指定快捷键会覆盖EXCEL默认的快捷键。例如:把CTRL+C指定给某个宏,那么CTRL+C就不再执行复制命令。用以下方法可以打印出EXCEL的快捷键清单(用A4纸打印共有24页之多):
1)打开EXCEL帮助文件并选择“目录”选项。
2)从“使用快捷键”文件夹中选择“”快捷键“标题。
3)右击该标题,从快捷菜单中选择“打印”。
4)选择“打印所选标题和所有子主题”,单击“确定”。
可以在创建宏时指定快捷键,也可以在创建后再指定。要在创建(录制)宏时指定快捷键,只须在录制宏时在输入宏名后,在“快捷键”文本框中输入相应的键。录制宏后指定快捷键也很简单,只需选择“工具”“宏”,显示“宏”对话框,选择要指定快捷键的宏,再单击“选项”按钮,通过“选项”对话框进行设置。
2.2 决定宏保存的位置
宏可保存在三种可能的位置:
1)当前工作簿。(只有该工作簿打开时,该宏才可用。)
2)新工作簿。
3)个人宏工作簿。
2.3 个人宏工作簿
个人宏工作簿,是为宏而设计的一种特殊的具有自动隐藏特性的工作簿。第一次将宏创建到个人宏工作簿时,会创建名为“PERSONAL.XLS"的新文件。如果该文件存在,则每当EXCEL启动时会自动将此文件打开并隐藏在活动工作簿后面(在“窗口”菜单中选择“取消隐藏”后,可以很方便地发现它的存在。)如果你要让某个宏在多个工作簿都能使用,那么就应当创建个人宏工作簿,并将宏保存于其中。个人宏工作簿保存在“XLSTART”文件夹中。具体路径为:C:\WINDOWS\Profiles\Application Data\Microsoft\Excel\XLSTART。可以以单词“XLSTART”查询。
注意:如果存在个人宏工作簿,则每当EXCEL启动时会自动将此文件打开并隐藏。因为它存放在XLSTART文件夹内。
2.3.1 保存宏到个人宏工作簿
本练习,将保存一个简单的宏到个人宏工作簿,该宏为文本加下划线并改为斜体,步骤如下:
1)建立一个名为“HOUR2”的工作簿,选择"工具"-"宏"-"录制新宏",显示"录制新宏"对话框.
2)输入"格式化文本"作为宏名.
3)从"保存在"下拉框中选择"个人宏工作簿".
4)单击"确定"按钮.现在进入录制模式.
5)单击"斜体"工具栏按钮.一段时间内,鼠标出现沙漏,特别是在第一次创建个人宏工作簿时,因为EXCEL在创建该工作簿.
6)单击"下划线"按钮.
7)停止录制.
2.3.2 使用并编辑个人宏工作簿中的宏
刚才已经保存了一个宏到个人宏工作簿,现在可以在任何工作簿中使用该宏.可按如下步骤操作:
1)关闭所有EXCEL工作簿.
2)任意打开一个EXCEL文件.(EXCEL自动将个人宏工作簿同时打开并隐藏.)
3)在A3中输入你的名字.
4)选择"工具"-"宏",显示宏对话框.现在可以在宏列表中看到"格式化文本"这个宏.
5)选择"格式化文本"宏,并执行.现在A3单元格中,你的名字变为斜体字还带有下划线.选择"窗口"-"取消隐藏",可以将PERSONAL.XLS显示出来,其中没有任何文字,但通过VBA编辑器可以在其中的模块中找到"格式化文本"这个宏.在VBA编辑器中可以对该宏进行直接编辑或者删除.如果PERSONAL.XLS中一个宏都没有,在启动EXCEL时仍会打开PERSONAL.XLS,这也许是EXCEL存在的一个小毛病.
2.4 将宏指定给按钮
即使通过快捷键可以是宏的执行变快,但是一旦宏的数量多了也难于记忆,而且,如果宏是由其他人来使用,难道你要他们也记住那么多的快捷键吗?
作为EXCEL开发者,一个主要的目标是为自动化提供一个易于操作的界面."按钮"是最常见的界面组成元素之一.通过使用“窗体”工具栏,可以为工作簿中的工作表添加按钮。在创建完一个按钮后,可以为它指定宏,然后你的用户就可以通过单击按钮来执行宏。在本练习中,将创建一个按钮,并为它指定一个宏,然后用该按钮来执行宏。具体步骤如下:
1)打开“HOUR2”工作簿。
2)调出”窗体“工具栏。
3)单击”窗体“工具栏中的“按钮”控件,此时鼠标变成十字形状。
4)在希望放置按钮的位置按下鼠标左键,拖动鼠标画出一个矩形,这个矩形代表了该按钮的大小。对大小满意后放开鼠标左键,这样一个命令按钮就添加到了工作表中,同时EXCEL自动显示“指定宏”对话框。
5)从“指定宏”对话框中选择“格式化文本”,单击“确定”。这样,就把该宏指定给命令按钮。
6)在按钮的标题“按钮1”前单击鼠标左键,按下DELETE直到删除所有文本,输入“格式化”作为标题。
7)单击按钮外的任意位置,现在该按钮的标题由默认的“按钮1”变为“格式化”而且被指定了一个宏。
8)试着在某个单元格中输入文本,单击按钮运行该宏。
当鼠标移动至该按钮时自动变成手的形状,如果要改变其大小或标题,只需用右键单击该按钮就可以进行修改和设置。很明显,你再也不需记住宏的名字或快捷键了,只需按一下按钮。
2.5 将宏指定给图片或其他对象
要执行宏有多种方法可以选择,可以将宏指定给按钮等控件,还可以指定给图片、自定义工具栏、窗体甚至可以将宏指定给某个“事件”,比如单击工作表,双击工作表,激活工作表,打开工作簿等等,“事件”是一个重要的概念,除此而外“方法”“对象”都是将来你会经常接触到的。现在它们看来十分抽象,但是将来你会很熟悉这些词语。指定宏到图片十分简单,只需单击某个图片,单击快捷菜单中的“指定宏”进行设置即可。
如果不希望在工作表上添加控件或图片执行宏,还有一种方法可以选择:将宏指定给“工具栏按钮”,可按如下步骤进行:
1)打开“HOUR2”工作簿,选择“工具”-“定义”,显示“自定义工具栏”对话框。
2)从“类别”列表框中选择“宏”,从“命令”列表框中选择“自定义按钮”。
3)将“自定义按钮”拖动到工具栏。
4)右键单击该按钮,选择“指定宏”,显示“指定宏”对话框。
5)选择“格式化文本”并确定。
6)单击“关闭”按钮,关闭“自定义工具栏”对话框。
7)试着在某个单元格中输入文本,单击工具栏按钮运行该宏。
2.6 小结
小结与思考: 宏存放于三个可能的位置。个人宏工作簿存放的位置和特性。执行宏的方式。指定宏是为某个对象的事件指定一个程序,一旦这个对象以该事件激活,系统将运行指定的程序。
常用的对象有:workbook,worksheet,range,cells,图表,图片,数据透视表,控件,窗体,工具栏.每一个对象都有其可以响应的特殊事件(也有一些通用事件如单击或双击等)。如有兴趣,可以通过EXCEL帮助文件查询这几个词条。在EXCEL中看到的几乎都是属于某个对象,而在EXCEL中所做的许多工作,如移动一下鼠标等等,都可能触发了一个事件。下一学时我们将共同学习“控件”。
第三课 学习控件
3.1 EXCEL开发过程简介
需要对以下问题有个大致的概念.
1)谁使用-----这决定了程序的操作难度及界面感观.
2)数据来源和保存在哪里-----这决定了程序的结构.
3)如何操作-----这将决定程序的界面和细节.
4)数据处理的结果-----最终决定程序的价值.
3.2 认识不同的控件
开始时请关闭所有工作簿,打开一个新工作簿并另存为"HOUR3".在工具栏上单击鼠标右键,从快捷菜单中选择"窗体",显示"窗体"工具栏.其中有16个控件,只有9个可放到工作表内。
1)标签:它用于表现静态文本。
2)分组框:它用于将其他控件进行组合。
3)按钮:用于执行宏命令。
4)复选框:它是一个选择控件,通过单击可以选择和取消选择,可以多项选择。
5)选项按钮:通常几个选项按钮组合在一起使用,在一组中只能选择一个选项按钮。
6)列表框:用于显示多个选项并从中选择。只能单选。
7)组合框:用于显示多个选项并从中选择。可以选择其中的项目或者输入一个其它值。
8)滚动条:不是你常见的来给很长的窗体添加滚动能力的控件,而是一种选择机制。例如调节过渡色的滚动条控件。包括水平滚动条和垂直滚动条。
9)微调控件:也是一种数值选择机制,通过单击控件的箭头来选择数值。例如改变Windows日期或时间就会使用到微调控件。
3.3 向工作表添加控件
用EXCEL设计界面十分简单,要将控件添加到工作表上,可以按以下步骤操作:
1)创建新工作簿并另存为"HOUR3",显示"窗体"工具栏.
2)选择"标签"控件.
3)将鼠标定位到E1,此时鼠标变成小十字.
4)按下左键,拖动大约四个单元格长度,放开鼠标左键.如果希望控件大小易于控制,可在创建该控件时按下ALT拖动.
5)在标签1上单击右键,选择"编辑文字",现在可以输入文字.完成后,单击任何单元格退出文字编辑.
6)通过以上步骤可以添加其它控件到工作表中,不再赘述.
3.4 设置控件的特性
设置控件的特性,可以按以下步骤操作:
1)选中先前创建的复选框控件,如果没有马上创建一个.
2)右击该控件,选择"控制"选项卡.
3)在"单元格链接"中输入A1并确定.
4)单击任意单元格,退出设置.
5)用鼠标左键单击复选框,A1出现TRUE,这意味着该控件被选中.再次单击该控件,A1出现FALSE.
6)选择刚才创建的滚动条控件.并调出"设置控件格式"对话框.
7)在"单元格链接"中输入A3并确定.
8)在滚动条外任意单元格单击鼠标左键,使滚动条不被选择.
9)用鼠标单击滚动条上的箭头,则A1的数值增加1,继续单击则A1的数值继续增加.
10)保存并关闭该工作簿.
3.5 给控件命名
当创建一个控件时EXCEL会自动给它指定一个名字,但不便于理解和记忆,为控件取名的方法基本和给单元格或区域取名的方法相同.选中某个控件,再在位于公式栏上的"名字"编辑框输入控件名字.这样就给控件更改了名字.
3.6 使用用户窗体
如果希望创建专业级的应用程序,并且方便用户输入数据,那么应该使用用户窗体.用户窗体可以作为程序的对话框和窗口.向用户窗体添加控件基本类似于向工作表添加控件,然而第一步要创建一个用户窗体.这可以通过VBA编辑器实现.具体按以下步骤操作:
1)打开"HOUR3"工作簿,选择"工具"-"宏"-"VBA编辑器",打开VBA编辑器.
2)在VBA编辑器中选择工具栏上的"插入用户窗体"按钮或者选择"插入"菜单,从下拉菜单中选择"用户窗体"
现在,VBA编辑器中出现一个名为"USERFORM1"的窗体,"控件工具箱"同时出现,在其中有许多已经熟悉的控件,另外还有一些新的控件.
这些新的控件是:
A)切换按钮:该控件如果被选中,那么会保持被按下的状态.如果再次单击它就恢复为没有按下的状态.EXCEL工具栏中有几个这样的按钮,例如:"全屏显示","加粗","下划线"以及"窗体"工具栏中的"切换网格"等.
B)选项卡条(TabStrip):它是包含多个选项卡的控件.通常用来对相关的信息进行组织或分类.例如:你也许希望用选项卡条来显示各个地区的销售信息,可以给每个地区设置一个选项卡.在默认时,选项卡包含两页,分别叫做TAB1和TAB2,可以添加更多的选项卡.
C)多页:外观类似选项卡条,是包含一页或多页的控件.选项卡条给人相似的外观,而多页控件的各页包含各自不同的控件,有各自不同的布局.多页的例子很多,例如:"设置控件格式"对话框和"工具"菜单中的"选项"对话框.以及"格式"菜单中的"单元格..."对话框.
D)图像控件:它允许向窗体上放置图片.图片格式须为 :*.bmp,*.cur,*.gif,*.ico,*.jpg,*.wmf.
F)RefEdit:这是工具箱中默认情况下的最后一个控件。它外观象文本框,通过这个控件可以将用户窗体折叠起来,以便选择单元格区域。还记得在使用fx“粘贴函数”时的情况吗?
通过实践,我们会逐渐掌握每个控件的特性,这的确需要花时间,但不必死记硬背。
在对用户窗体设计得满意时,可以对其进行预览,方法是在VBA编辑器中选择该窗体,单击“运行”菜单中的三角符号“运行子过程/用户窗体”,三角符号在VBA工具栏上也可能看得到,旁边是一个垂直的等于符号,最右边是个小正方形符号,它们类似于录音机上的按钮。运行窗体的另一个方法是按F5键。
小结:学习完本学时后,我们具备了用于程序界面设计的基本知识。我们对控件不在感到陌生,也明白如何向工作表和窗体添加控件,但控件的内容很多,需要边用边理解.此后,我们将从界面转移到学习编写代码,并最终将二者融合。让我们准备好学习编程吧!
3.7 疑难解答
问题1.怎样决定控件的位置?如何选择添加到工作表还是添加到用户窗体?
解答:这完全取决于个人的爱好和应用程序的用户.如果用户对EXCEL非常熟悉,那么他们也许更希望以工作表的方式操作.在这种情况下不妨直接在工作表上创建控件;如果你的用户对EXCEL不熟悉或者你需要给用户一个专业的界面感觉,那么应该使用用户窗体.
问题2.什么情况下该用选项卡条而不是多页控件?
解答:如果每一页具有相同布局,则应选择选项卡条,否则应该选择多页.
本节作业
1.思考:
1)列举两种可以让用户进行多选一的控件。
2)如何将控件与单元格链接起来。
2.判断:
1)只有在VBA编辑器中才能添加用户窗体。
2)在VBA编辑器中看到的窗体网格线在运行时会自动显示。
3.填空:( )是显示静态文本的控件。
第四课 理解变量和变量的作用(1)
4.1 代码存在的位置:模块
VBA代码必须存放在某个位置,这个地方就是模块。有两种基本类型的模块:标准模块和类模块。模块中的每个过程或者是函数过程,或者是子程序概念.本课的最后部分将讨论函数过程和子程序的区别。
新术语:
模块:它是作为一个单元保存在一起的VBA定义和过程的集合。
类模块:VBA允许你创建自己的对象,对象的定义包含在类模块中。
你的大部分工作集中在标准模块中(简称为模块)当录制宏时如果不存在模块,EXCEL自动创建一个。EXCEL和VBA不关心代码存放在哪一个模块中,只要代码存在于打开的工作簿中即可。
4.2 对模块的概览
过程被定义为VBA代码的一个单元,过程中包括一系列用于执行某个任务或是进行某种计算的语句。工作簿的每个过程都有唯一的名字加以区分。
有两种不同的过程:子程序和函数过程。子程序只执行一个或多个操作,而不返回数值。当录制完宏查看代码时,所看到的就是子程序。宏只能录制子程序,而不能录制函数过程。一个子程序的例子如清单4-1所示。
程序清单4-1 子程序的例子
Sub cmdSmallFont_Click()
With Selection.Font
.Name="Arial"
.FontStyle="Regular"
.Size=16
End With
End sub
上面列出的过程实际上是一个事件过程。通过它的名字,就可以知道这是一个事件过程。这个过程的名字是由一个对象的名字CmdSmallFont和一个事件的名字Click组成的,两者之间用下划线分开。如果还不明白,可以告诉你,CmdSmallFont是一个命令按钮的名字。也就是说,当单击这个命令按钮时,就会运行这个事件过程。
函数过程通常情况下称为函数,要返回一个数值。这个数值通常是计算的结果或是测试的结果,例如False 或True.正如前面所说,可以用VBA创建自定义函数。实际上可以在工作表上使用你创建的函数。程序清单4-2是一个计算价格的10%为运费的简单例子。
程序清单4-2 简单的用户定义函数示例。
Public Function Shipping(Price)
Shipping = Price * 0.1
End Function
请注意,这个函数使用一个参数(Price).子程序和函数都可以使用参数。不论Price的值是多少,它都将决定运费额。Price可以是数字和单元格引用。函数返回计算出来的运费,这个函数可以用在单元格中。
A B
1 Price 100
2 Shipping =shipping(B1)
4.2.1 创建过程
创建第一个过程需要两个基本步骤。首先,需要向工作簿中添加一个模块。接着需要向模块中添加一个工程。对于创建的每一个应用程序,只需添加一次模块。可以使用多个模块,但这是不必要的。某些开发者喜欢使用多个模块,以便根据他们的目的或者窗体对过程进行组织。在本练习中,创建的过程只显示一个消息框。
在本练习中创建的过程只显示一个消息框。在本练习中使用Msgbox是为了提供一个可见的例子,虽然我们还没有介绍过Msgbox语句,但是在本例中将使用它。要创建该过程,请按如下步骤进行:
1)打开一个新工作簿。
2)选择"工具"-"宏"-"Visual Basic编辑器",打开VBA编辑器窗口。
3)在`VBA编辑器的左面,可以看到“工程资源管理器”窗口。在工程资源管理器窗口的“Thisworkbook"上单击鼠标右键,选择“插入”-“模块”,这样就将一个模块添加到应用程序中了。(如果你没有看见“工程资源管理器”窗口,可以按Ctrl+R)
4)选择“插入”“过程”,显示“添加过程”对话框。
5)输入“第一个工程”作为过程名字。在“类型”分组框中,确认选择了“子程序”。单击“确定”按钮。这样一个新的过程就添加到模块中了。可以在模块中看到以 Public Sub 第一个过程()开始,以End Sub结束的语句结构。
6)在过程中插入光标,输入以下语句并回车:
Msgbox "这是我的第一个过程"
在输入Msgbox后,会自动弹出一个消息框告诉你有关这条命令的信息,称之为自动列表技术。输入完成的过程如下所示:
Public Sub 第一个过程()
Msgbox "这是我的第一个过程"
End Sub
VBA对子程序和函数有如下的命名规则:
* 名字中可以包含字母数字和下划线。
* 名字中不能包含空格句号惊叹号,也不能包含字符@ & $ #.
* 名字最多可以包含255个字符。
4.2.2 运行宏
创建这个过程后,可以运行一下。运行一个过程有几种方法:可以直接使用“运行”菜单,“运行子程序/用户窗体”工具栏按钮或按下F5键。要运行一个过程,可以按照如下步骤:
1)单击“运行子程序/用户窗体”工具栏按钮,过程执行并显示一个消息框。
2)单击消息框之中的“确定”按钮,关闭该消息框。
4.3 保存对模块所做的改变
要保存新过程,需要保存过程所驻留的工作簿.可以用VBA编辑器保存工作簿.具体步骤如下:
1)选择"文件"-"保存工作簿".因为本工作簿还没有保存过,所以要给它命名.
2)输入"HOUR4"作为文件名并按回车键,则工作簿和模块与过程都保存下来了.
第四课 理解变量和变量的作用(2)
4.4 变量
变量是用于临时保存数值的地方.每次应用程序运行时,变量可能包含不同的数值,而在程序运行时,变量的数值可以改变.
为了说明为什么需要变量,可以按照如下步骤创建一个简单的过程:
1)创建一个名为"你叫什么名字"的过程.
2)在过程中输入如下代码:
Inputbox "输入你的名字:"
现在不要担心inputbox语句的语法,将在第六学时中了解到有关这条命令的更多信息.
3)按下F5键运行过程,这时会显示一个输入框,要求输入你的名字.
4)输入你的名字并按"确定"按钮,则结束该过程.
你输入的名字到那里去了?如何找到用户在输入框中输入的信息?在这种情况下,需要使用变量来存储用户输入的结果.
4.4.1 变量的数据类型
使用变量的第一步是了解变量的数据类型.变量的数据类型控制变量允许保存何种类型的数据.表4-1列出了VBA支持的数据类型,还列出了各种类型的变量所需要的存储空间和能够存储的数值范围.
数据类型 存储空间 数值范围
Byte 1字节 0 - 255
Booleam 2字节 True或者False
Integer 2字节 -32768 - 32767
Long(长整型) 4字节 -2147483648 - 2147483647
Single 4字节 负值范围:
-3.402823E38 - -1.401298E-45
正值范围:
1.401298E-45 - 3.402823E38
Double 8字节 负值范围:-1.79769313486232E308 - -494065645841247E-324
正值范围:4.94065645841247E-324 - 1.79769313486232E308
Currency 8字节 -922337203685477 - 922337203685477
Decimal 14字节 参考技术C
宏的作用是:把当前文件夹下每一个excel文件的每一行(共8行)复制到总表的每一个sheet工作表中去,即把一个文件里的那1张表的8行复制转换成另一个文件的8张表里的8行,主要用于汇总工作。
首先,需要在excel中添加加载项--数据分析库,然后就可以进行数据自动生成了,以专业的术语叫做“随机数发生器”。依次点击:excel选项-加载项-用VBA也可以根据数据源批量填充模板生成新表一个简单情况的示例:示例里的代码:Sub根据数据源批量填充。
将excel表里的数据提取到word文档里的解决方法如下:
1、复制法。
即将原来的数据直接复制后,在word中进行粘贴,这样数据就直接导入到word文档中了。
2、邮件合并法。
在word中启用邮件合并,按向导的过程分别制作好需要插入的需要,数据源,对应关系,最后执行合并就可以了。
3、程序法。
在word中插入合并域(如果是有规律的表格,可以不用这一步),然后编写vba程序,从excel文件中读取数据,然后写入到word中指定的位置。
参考技术D 在EXCEL中“宏”是指能够完成某一个特定操作的代码,有4.0宏和VBA宏,一般现在所说的“宏”是指VBA编写的代码。初学者可以用“工具-宏-录制宏”功能,将常用操作录制成宏,然后在需要用的时候,从“工具-宏-宏”中选中这个宏的名字,点“执行”就可以将前面录制的操作自动执行一次。
熟练运用“宏”可减轻操作强度,提高效率。
那么,"宏"到底是什么呢?
在Excel 97中,"宏"是一个难以理解的概念,但对于一个具体的"宏"而言,却是容易理解的,如果说"将一块文字变为'黑体',字号为'三号'"就可以看作一个"宏"的话,那么"宏"就不难理解了,其实Excel 97中的许多操作都可以是一个"宏"。
"记录宏"其实就是将工作的一系列操作结果录制下来,并命名存储(相当于VB中一个子程序)。在Excel 97中,"记录宏"仅记录操作结果,而不记录操作过程。例如,改变文字字体时,需要打开"字体"栏中的下拉列表,再选择一种字体,这时文字即变为所选择的字体,这是一个过程,结果是将所选择的文字改变为所选择的字体。而"记录宏"则只记录"将所选择的文字改变为所选择的字体"这一结果。
Excel 97中工作表是由行和列组成的二维表格,我们可以通过系统提供的语句activesheet.cells(I,j),将当前工作表中的第I行第j列所在的单元格中的数据取出(也可将它数据填入到指定的单元格中),然后反把它放入所定义的数组中,这时就可以对其进行各种操作,如求平均分、总分、分数段人数等等。
本人就利用Excel 97中所提供的宏功能来做学生成绩的分析处理程序。本程序是Excel中的一个文件,其中包含以下几个宏:分班、总分、平均分、分数段、删除等。
本程序是以本校高三理科班学生成绩进行分析。
有关程序中用到的几具宏的功能说明:
分班:针对于难以确定班级的情况下,以班为单位进行分班,本宏可以作为高一新生入学时进行分班的功能。
总分:对原始的成绩自动求总分。
平均分:对原始的成绩以班为单位进行各学科平均成绩的计算及全校各学科成绩的计算。
分数段:给定一个最高分数及最低分数,然后统计出各班各个分数段的人数,各分数段人数进行累计。
删除:用于删除不用的工作表。
现将各个宏的代码列举如下:
一.分班
Sub 分班()
Const studentno = 191 '学生人数
Const zdno = 12 '字段数
Dim zd$(zdno) '定义为12个字段的数组
Dim a(studentno, zdno), stu(60, zdno)
Dim nam$(studentno), bjname$(60) '定义一个存放全校学生名字及各班学生名字的数组
Dim bj(studentno) '定义存放班级的一个数组
'理科班工作表
Sheets("高三理").Select
For i = 2 To studentno
bj(i) = ActiveSheet.Cells(i, 1)
nam$(i) = ActiveSheet.Cells(i, 2)
For j = 3 To zdno
a(i, j) = ActiveSheet.Cells(i, j)
Next j
Next i
'存放字段到数组中。
For i = 1 To zdno
zd$(i) = ActiveSheet.Cells(1, i)
Next i
'先建立各个班级的工作表
Sheets("高三理").Select
Sheets("高三理").Copy After:=Sheets("分数段")
Sheets("高三理 (2)").Select
Sheets("高三理 (2)").Name = "33"
For i = 2 To studentno
For j = 1 To zdno
ActiveSheet.Cells(i, j) = Space$(1)
Next j
Next i
Range("a1").Select
For i = 1 To zdno
ActiveSheet.Cells(1, i) = zd$(i)
Next i
'34到36班工作表的建立
For i = 34 To 36
x$ = Mid$(Str(33), 2)
Sheets(x$).Select
Sheets(x$).Copy After:=Sheets("分数段")
Sheets(x$ + " (2)").Select
Sheets(x$ + " (2)").Name = Mid$(Str(i), 2)
Next i
'具体分班。
For k = 33 To 36
bjrs = 0
x$ = Mid$(Str(k), 2)
no = k Mod 10
Sheets(x$).Select
For i = 2 To studentno
If bj(i) = no Then
bjrs = bjrs + 1
bjname$(bjrs) = nam$(i)
For j = 3 To zdno
stu(bjrs, j) = a(i, j)
Next j
End If
Next i
For i = 2 To bjrs
ActiveSheet.Cells(i, 1) = no
ActiveSheet.Cells(i, 2) = bjname$(i)
For j = 3 To zdno
ActiveSheet.Cells(i, j) = stu(i, j)
Next j
Next i
Next k
End Sub
二.总分
Const studentno = 190
Const xknum = 6
Const zdnum = 12
Sheets("高三理").Select
For i = 2 To studentno + 1
Sum = 0
For j = 1 To xknum
Sum = Sum + ActiveSheet.Cells(i, j + 3)
Next j
ActiveSheet.Cells(i, zdnum-1) = Sum
Next i
End Sub
三.平均分
Sub 平均分()
Const studentno = 190
Const xknum = 6
Dim fs(studentno, xknum), pjf3(4, 6), bjrs(4), qxpjf(6)
Dim bj(studentno)
Sheets("高三理").Select
'以下程序段用于求全校平均分
For i = 1 To studentno
bj(i) = ActiveSheet.Cells(i + 1, 1)
For j = 1 To xknum
fs(i, j) = ActiveSheet.Cells(i + 1, j + 3)
Next j
Next i
For i = 1 To xknum
Sum = 0
For j = 1 To studentno
um = Sum + fs(j, i)
Next j
qxpjf(i) = Sum / (j - 1)
Next i
'以下程序段用于求各班平均分
For j = 1 To 4
For i = 1 To studentno
Ifbj(i) = j + 2 Then
bjrs(j) = bjrs(j) + 1
For k = 1 To xknum
pjf3(j, k) = pjf3(j, k) + fs(i, k)
Next k
End If
Next i
Next j
For j = 1 To 4
For i = 1 To 6
pjf3(j, i) = pjf3(j, i) / bjrs(j)
Next i
Next j
'写入各班各科平均分
Sheets("平均分").Select
For i = 1 To 4
For j = 1 To 6
ActiveSheet.Cells(i + 2, j + 1) = pjf3(i, j)
Next j
Next i
'写入全校各科平均分
i = 7
For j = 1 To 6
ActiveSheet.Cells(i, j + 1) = qxpjf(j)
Next j
End Sub本回答被提问者采纳
WOW里有啥FS 有用的宏么
有的话给发个...顺便告诉下作用是什么?谢谢新手
1、水宝宝#showtooltip [nopet] [target=pet,dead] 召唤水元素; [pet] 冰冻术
/cast [nopet]召唤水元素
/cast [target=pet,dead]召唤水元素
/stopmacro [target=pet,dead]
/cast 冰冻术
/petattack
/click [pet] PetActionButton5
没有BB使用水元素技能 有BB使用冰冻术技能 即使BB死亡状态也可召唤。
如果是刷血色 STSM等副本需要停留宝宝将
/petattac
k改成
/petstay
/petpassive
---停留+被动
或者做两个宏
—————————————————我不喜欢画分割线—————————————————
2、无敌重置副本宏
/invite 任意在线玩家
/script LeaveParty()
/logout
无论你组的人有没有组 都会自动邀请再离组并小退 达到返回副本入口重置副本的目的
3、战场排场宏
/run JoinBattlefield(0)
适合秒排时用,打开战场NPC,点此宏将自动排队不会关闭对话窗,以便观看进的是否为新场。
新增:坐骑宏
#showtooltip
/castrandom [modifier:alt]迅捷雷刃豹;[flyable]白色幼龙;迅捷雷刃豹
能飞行就召飞行坐骑,不能则召唤陆地坐骑。 如果想在外域骑马就按alt+宏
4、死绝杀
#showtooltip
/stopcasting
/cast 气定神闲
/stopcasting
/use 14
/cast 奥术强化
/stopcasting
/cast 火球术
现在流行奥法气定火球.
5、冰枪术
#showtooltip
/stopcasting
/cast [target=mouseover,harm,nodead]冰枪术;冰枪术
优先攻击鼠标所指的敌对存活生物,其次攻击当前目标。
6、法术反制
#showtooltip
/stopcasting
/Cast [modifier:alt,target=focus,harm,nodead]法术反制;[target=mouseover,harm,nodead]法术反制;法术反制
alt+宏为反制焦点,鼠标所指敌对存活生物反制(优先级别低于焦点反制),直接按为反制,
7、变形术
#showtooltip
/Cast [target=mouseover,harm,nodead]变形术;[modifier:alt,target=focus,harm,nodead]变形术;变形术
参考法术反制
8、寒冰屏障
#showtooltip
/stopcasting
/cancelAura 寒冰屏障
/cast 寒冰屏障
直接按为冰箱,有冰箱按宏则无视公共CD取消冰箱.
9、隐形术
#showtooltip
/stopcasting
/cancelaura 隐形术
/cast 隐形术
同上
10、
#showtooltip
/TargetLastTarget [noharm]
/cast [modifier:alt]活体炸弹;火焰冲击
加了一句/TargetLastTarget [noharm]
如果你没有目标则自动选择上一个目标直接施法。 本来加harm的 结果按了后会取消当前目标去选上一个目标 所以就改为noharm了。
对付盗贼等会消失的职业时很好用,缺点是会选到NPC,所以有附近提议NPC时最好确定敌人出现后再用。
11、
#showtooltip
/TargetLastTarget [noharm]
/cast [modifier:shift]冰枪术;[modifier:alt]火焰冲击;减速
同上,减速就好用点了 无视方向。
—————————————————那你还画线干啥—————————————————
这一部分可以省不少按键 强烈推荐
12、
快餐店
#showtooltip
/cast [modifier:alt]造水术;[button:3]召唤餐桌;[modifier:shift]魔法点心;[modifier:ctrl]造食术;[button:2] 魔法羊角面包;魔法冰川水
一个店面就可以开个食品公司
alt+宏为造水 ctrl+宏为造食 鼠标中键+宏为拉桌子 shift+宏吃点心 左键按宏为喝水 右键吃面包
下面的宏就不解释这些了
13、传送术
#showtooltip
/cast [modifier:alt]传送:暴风城;[modifier:shift]传送:达纳苏斯;[modifier:ctrl]传送:埃索达;[button:3]传送:塞拉摩;[button:2]传送:沙塔斯;传送:铁炉堡
14、传送门
#showtooltip
/cast [modifier:alt]传送门:暴风城;[modifier:shift]传送门:达纳苏斯;[modifier:ctrl]传送门:埃索达;[button:3]传送门:塞拉摩;[button:2]传送门:沙塔斯;传送门:铁炉堡
15、Buff
#showtooltip
/cast [modifier:ctrl]魔法增效;[modifier:alt]魔法抑制;[modifier:shift]专注魔法;[button:2]奥术光辉;奥术智慧
16、护甲
#showtooltip
/cast [modifier:alt]法师护甲;[button:2]冰甲术;熔岩护甲
17、一条命
#showtooltip
/cast [modifier:alt]超级治疗药水;[modifier:alt]极效治疗石;[modifier:alt]生命之血;[modifier:shift]生命之血
/cast [modifier:alt]厚灵纹布绷带;厚灵纹布绷带
按shift+宏单独使用生命之血 直接按为绷带 按alt+宏为4者同时用。 不舍得喝红时删掉该句既可
18、种族天赋与护符旗帜
#showtooltip
/cast [modifier:alt]13;[modifier:shift]14;[button:2]联盟军旗;[modifier:ctrl]雷矛战旗;逃命专家
19、常用N开
#showtooltip
/stopcasting
/cast 奥术强化
/cast 燃烧
/cast 冰冷血脉
/cast 14
/cast 火球术
20、宝石
#showtooltip
/cast [modifier:alt]制造法力宝石;法力刚玉
21、要你命3000天赋
#showtooltip
/cast [modifier:ctrl]奥术强化;[modifier:alt]气定神闲;奥术弹幕
22、元素盾
#showtooltip
/cast [modifier:alt]防护火焰结界;防护冰霜结界
23、天神下凡
#showtooltip
/stopcasting
/cast 燃烧
/cast 冰冷血脉
/cast 奥术强化
/cast 气定神闲
/cast 烈焰菇
/cast 加速药水
/cast 14
这里加/stopcasting 是为了防止宏技能CD不刷新
—————————————————都是被逼的—————————————————
以下宏可根据个人需要更改。
24、
#showtooltip
/cast [modifier:alt]炎爆术;火球术
火法专用 快速瞬发脸盆.
25、
#showtooltip
/cast [modifier:alt]火球术;灼烧
冰法专用 快速瞬发火球
26、
#showtooltip
/Cast [modifier:alt]奥术冲击;奥术飞弹
快被遗忘的奥冲...
27、
#showtooltip
/cast [modifier:alt]烈焰风暴;龙息术
瞬发火炉
28、
#showtooltip
/cast [modifier:alt]烈焰风暴;冲击波
瞬发火炉
29、
#showtooltip
/stopcasting
/cast [modifier:alt]法术偷取;闪现术
30、
#showtooltip
/cast [modifier:alt]烈焰风暴;冰锥术
31、
#showtooltip
/cast [modifier:shift]解除诅咒;[modifier:alt]魔爆术;冰霜新星
32、
#showtooltip
/stopcasting
/Cast [modifier:alt]奥术冲击;奥术飞弹
33、
#showtooltip
/cast [modifier:alt]寒冰护体;[button:2]野魔花;法力护盾
冰法就将寒冰护体和法力护盾换下位置
施法打断提示宏,某高人写的 时间太久不记得了
下面3个宏是绑在一起的 进入游戏后按顺序各点一次。
之后你每打断掉别人的施法就会小队喊话
/p [hh:mm:ss] 我打断了[某某]的[牛X技能]
并且技能还是个连接 可以看到一些怪物的奇特法术。
34、打断提示宏1
/run function SIS_M(a,b,c,d,e,f,g,type) SendChatMessage(" 我打断了 ["..c.."] 的 \\124cff71d5ff\\124Hspell:"..f.."\\124h["..g.."]\\124h\\124r。",type);end
35、打断提示宏2
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"partty");end end
----"partty"代表小队 可以改为"say" "yell" "raid"等。
36、打断提示宏3"
/run if (not MSG_F) then CreateFrame("Frame","MSG_F",UIParent);end MSG_F:RegisterEvent("COMBAT_LOG_EVENT");MSG_F:SetScript("OnEvent",function(_,_,...) if (EV_M) then EV_M(...);end end);
—————————————————要你命3000分割线—————————————————
mocros-cache 文档 通用部分
以下内容复制到World of Warcraft\\WTF\\Account\\帐号id目录下
MACRO 12 " 冰枪术" INV_Misc_QuestionMark
#showtooltip
/stopcasting
/cast [target=mouseover,harm,nodead]冰枪术;冰枪术
END
MACRO 2 " 闪+ 偷" INV_Misc_QuestionMark
#showtooltip
/stopcasting
/cast [modifier:alt]法术偷取;闪现术
END
MACRO 9 " PVP水宝宝" Spell_Frost_SummonWaterElemental_2
#showtooltip [nopet] [target=pet,dead] 召唤水元素; [pet] 冰冻术
/cast [nopet]召唤水元素
/cast [target=pet,dead]召唤水元素
/stopmacro [target=pet,dead]
/cast 冰冻术
/petattack
/click [pet] PetActionButton5
END
MACRO 8 " 死绝杀" Spell_Fire_FelFlameBreath
#showtooltip
/stopcasting
/cast 气定神闲
/stopcasting
/use 14
/cast 奥术强化
/stopcasting
/cast 火球术
END
MACRO 10 " 焦点+鼠标反制" INV_Misc_QuestionMark
#showtooltip
/stopcasting
/Cast [modifier:alt,target=focus,harm,nodead]法术反制;[target=mouseover,harm,nodead]法术反制;法术反制
END
MACRO 4 " 冰锥" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:alt]烈焰风暴;冰锥术
END
MACRO 6 " 冰锥 诅咒" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:shift]解除诅咒;[modifier:alt]魔爆术;冰霜新星
END
MACRO 15 " 奥术飞弹" INV_Misc_QuestionMark
#showtooltip
/Cast [modifier:alt]奥术冲击;奥术飞弹
END
MACRO 7 " 棺材" INV_Misc_QuestionMark
#showtooltip
/stopcasting
/cancelAura 寒冰屏障
/cast 寒冰屏障
END
MACRO 3 " 火冲 炸弹" Spell_Fire_Fireball
#showtooltip
/TargetLastTarget [noharm]
/cast [modifier:alt]活体炸弹;火焰冲击
END
MACRO 19 " 灼烧 火球" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:alt]火球术;灼烧
END
MACRO 20 " 奥术天赋" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:ctrl]奥术强化;[modifier:alt]气定神闲;奥术弹幕
END
MACRO 25 " 坐骑" INV_Misc_QuestionMark
#showtooltip
/castrandom [modifier:alt]迅捷雷刃豹;[flyable]白色幼龙;迅捷雷刃豹
END
MACRO 11 " 隐形术" INV_Misc_QuestionMark
#showtooltip
/stopcasting
/cancelaura 隐形术
/cast 隐形术
END
MACRO 13 " 火盆" Spell_Fire_FlameBolt
#showtooltip
/cast [modifier:alt]炎爆术;火球术
END
MACRO 17 " 瞬发技能" Spell_Nature_Slow
#showtooltip
/TargetLastTarget [noharm]
/cast [modifier:shift]冰枪术;[modifier:alt]火焰冲击;减速
END
MACRO 5 " 解控制 饰品 军旗" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:alt]13;[button:2]联盟军旗;[modifier:shift]14;[modifier:ctrl]雷矛战旗;逃命专家
END
MACRO 1 "Decursive" INV_Misc_QuestionMark
/stopcasting
/cast [target=mouseover,nomod,exists] 解除诅咒; [target=mouseover,exists,mod:alt] 变形术; [target=mouseover,exists,mod:shift] 解除诅咒
END
-----------------------分分分,要你命------------------
mocros-cache 文档 角色部分 可跟以上部分放置一起 MACRO XXXX的数字或许要改
以下内容复制到World of Warcraft\\WTF\\Account\\帐号id\\服务器\\角色名 目录下
-----------
MACRO 16777225 " 元素盾" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:alt]防护火焰结界;防护冰霜结界
END
MACRO 16777227 " 天神下凡" Spell_Holy_Aspiration
#showtooltip
/stopcasting
/cast 燃烧
/cast 冰冷血脉
/cast 奥术强化
/cast 气定神闲
/cast 烈焰菇
/cast 加速药水
/cast 14
END
MACRO 16777235 " 快餐店" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:alt]造水术;[button:3]召唤餐桌;[modifier:shift]魔法点心;[modifier:ctrl]造食术;[button:2] 魔法羊角面包;魔法冰川水
END
MACRO 16777220 " 无敌重置副本宏" Spell_Holy_DivineIntervention
/invite 任意在线玩家
/script LeaveParty()
/logout
END
MACRO 16777226 " 祝福" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:ctrl]魔法增效;[modifier:alt]魔法抑制;[modifier:shift]专注魔法;[button:2]奥术光辉;奥术智慧
END
MACRO 16777230 " PVE水宝宝" Spell_Frost_SummonWaterElemental_2
#showtooltip [nopet] [target=pet,dead] 召唤水元素; [pet] 冰冻术
/cast [nopet]召唤水元素
/cast [target=pet,dead]召唤水元素
/stopmacro [target=pet,dead]
/petstay
/petpassive
/cast 冰冻术
/click [pet] PetActionButton5
END
MACRO 16777221 " 传送术" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:alt]传送:暴风城;[modifier:shift]传送:达纳苏斯;[modifier:ctrl]传送:埃索达;[button:3]传送门:塞拉摩;[button:2]传送:沙塔斯;传送:铁炉堡
END
MACRO 16777236 " 宝石" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:alt]制造法力宝石;法力刚玉
END
MACRO 16777223 " 护甲" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:alt]法师护甲;[button:2]冰甲术;熔岩护甲
END
MACRO 16777224 " 护盾" Spell_Shadow_DetectLesserInvisibility
#showtooltip
/cast [modifier:alt]寒冰护体;[button:2]野魔花;法力护盾
END
MACRO 16777237 " 一条命" Spell_Holy_HolyNova
#showtooltip
/cast [modifier:alt]作战治疗药水;[modifier:alt]生命之血;[modifier:alt]极效治疗石;[modifier:shift]生命之血
/cast [modifier:alt]厚灵纹布绷带;厚灵纹布绷带
END
MACRO 16777222 " 传送门" INV_Misc_QuestionMark
#showtooltip
/cast [modifier:alt]传送门:暴风城;[modifier:shift]传送门:达纳苏斯;[modifier:ctrl]传送门:埃索达;[button:3]传送门:塞拉摩;[button:2]传送门:沙塔斯;传送门:铁炉堡
END
MACRO 16777229 " 变形" INV_Misc_QuestionMark
#showtooltip
/Cast [target=mouseover,harm,nodead]变形术;[modifier:alt,target=focus,harm,nodead]变形术;变形术
END
MACRO 16777231 " 战场宏" Ability_Warrior_InnerRage
/run JoinBattlefield(0)
END
MACRO 16777232 " 打断提示宏1" Spell_ChargeNegative
/run function SIS_M(a,b,c,d,e,f,g,type) SendChatMessage(" 我打断了 ["..c.."] 的 \\124cff71d5ff\\124Hspell:"..f.."\\124h["..g.."]\\124h\\124r。",type);end
END
MACRO 16777233 " 打断提示宏2" Spell_ChargePositive
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"partty");end end
END
MACRO 16777234 " 打断提示宏3" Spell_DeathKnight_PathOfFrost
/run if (not MSG_F) then CreateFrame("Frame","MSG_F",UIParent);end MSG_F:RegisterEvent("COMBAT_LOG_EVENT");MSG_F:SetScript("OnEvent",function(_,_,...) if (EV_M) then EV_M(...);end end);
END
MACRO 16777228 "N开" Spell_Holy_TestOfFaith
#showtooltip
/stopcasting
/cast 奥术强化
/cast 燃烧
/cast 冰冷血脉
/cast 14
/cast 火球术
END 参考技术A 1 打图腾
From: Myrafae
这个宏会按照宏列表上的循序用魔杖依次打掉图腾。在用魔杖打掉所有图腾后会将目标重新切回到打图腾前的目标。
note:这个宏只在你的目标是SM时才会起作用。同时将按下列优先级打掉图腾:
根基图腾 1
火焰抗性图腾 2
冰霜抗性图腾 3
风怒图腾 4
地缚图腾 5
----------------------------------------------------------------------
/script c=CastSpellByName;n=TargetByName;if UnitClass("target")=="Shaman" then n("Earthbind totem") n("Windfury totem")
n("Frost Resist") n("Fire Resist") n("Grounding totem") c("Shoot") TargetLastEnemy() else c("Shoot") end;
-----------------------------------------------------------------------
请注意这个宏只有当你的目标是SM的时候才能起作用,也就是说即使你和一个牧师一个SM战斗时——当SM放下图腾——你也要把目标切成SM才
能启动这个宏。一个判断对方是否是部落然后寻找图腾的宏如下:
----------------------------------------------------------------------
/script c=CastSpellByName;n=TargetByName;if UnitFactionGroup("target")=="Horde" then n("Earthbind totem") n("Windfury totem")
n("Frost Resist") n("Fire Resist") n("Grounding totem") c("Shoot") TargetLastEnemy() else c("Shoot") end;
-----------------------------------------------------------------------
2 奥术飞弹BUG修复
用这个宏可以通过防止重叠来消除奥术飞弹BUG。
-----------------------------------------------------------------------
/script cS, W = "Arcane Missiles(Rank 7)", 3
/script --CastSpellByName("Arcane Missiles(Rank 7)")
/script if sA==nil then sT = time(); eT = time() + W; CastSpellByName(cS); sA = true end; if eT <= time() then sA = nil
end
----------------------------------------------------------------------
3 狂暴/施法
只对巨魔法师有效。
note:有LVL11Frostbolt的法师将rank 10改成rank 11就好了~:)
第一个版本是当狂暴触发时施放寒冰箭。
-----------------------------------------------------------------------
/cast Berserking
/cast Frostbolt(Rank 10)
-----------------------------------------------------------------------
第二个版本是当且仅当你的生命低于50%的时候(你也可以改动这个值)
----------------------------------------------------------------------
/script if UnitHealth('player') / UnitHealthMax('player') < 0.5 then CastSpellByName("Berserking"); end
/cast Frostbolt(Rank 10)
-----------------------------------------------------------------------
第三个版本是检查你的目标生命值是否低于20%,如果是,则施放寒冰箭。然后检查你的生命值是否低于50%,如果是,则触发狂暴,如果不是
则释放寒冰箭。
-----------------------------------------------------------------------
/script if UnitHealth('target') / UnitHealthMax('target') < 0.2 then CastSpellByName("Frostbolt(Rank 10)") end;
/script if UnitHealth('player') / UnitHealthMax('player') < 0.5 then CastSpellByName("Berserking"); end
/cast Frostbolt(Rank 10)
-----------------------------------------------------------------------
4 魔杖
这个宏不影响你使用技能,但是当你的魔法不够下次施法时,就会自动改为魔杖射击。用其他法术代替“Frostbolt (Rank 10)”和所耗mana“
260”就能改成其他法术切换魔杖射击宏。
-----------------------------------------------------------------------
/script if (UnitMana("player")>260) then CastSpellByName("Frostbolt (Rank 10)") else CastSpellByName("Shoot") end;
-----------------------------------------------------------------------
5 法术选择
这个宏可以根据目标的职业来施放冰箭或是火球。也可以按找个人的需要来修改宏中的职业。
下面这个例子是当目标是战士或盗贼施放寒冰箭,当不是WL和mage的时候施放火球。
-----------------------------------------------------------------------
/script x=UnitClass("target");if(x=="Rogue" or x=="Warrior") then CastSpellByName("Frostbolt(Rank 10)");end; else if not
(x=="Warlock" or x=="Mage") then CastSpellByName("Fireball(Rank 11)");end;end;
-----------------------------------------------------------------------
6 下马-变形
From: Lowallyn
立即下马然后施放变形术。包包中的马的位置用bag#和item#来表示。
-----------------------------------------------------------------------
/script UseContainerItem(Bag#, Item#);
/cast Polymorph(Rank 4)
-----------------------------------------------------------------------
7 寒冰箭风筝
From: Geon
气定神闲前用1级寒冰箭,气定后用最高级冰箭。
----------------------------------------------------------------------
/script i=1;m=0;while(UnitBuff("player",i)~=nil) do if(strfind(UnitBuff("player",i),"Spell_Nature_EnchantArmor")~=nil) then
m=1; end;i=i+1;end; c=CastSpellByName; if(m==1) then c("Frostbolt");else c("Frostbolt(Rank 1)");end;
----------------------------------------------------------------------
8 协助
From: Graven
清除当前目标同时将目标切至填入的角色。
-----------------------------------------------------------------------
/script ClearTarget();
/assist [Name of Character]
----------------------------------------------------------------------
9 低生命值使用魔杖
这个宏不会影响你正常的施放寒冰箭(或其他技能),但是当目标的生命值低于5%时(可以自行修改),将用魔杖代替。
-----------------------------------------------------------------------
/script if UnitHealth('target') / UnitHealthMax('target') < 0.05 then CastSpellByName("Shoot") end;
/cast Frostbolt(Rank 10)
-----------------------------------------------------------------------
10 灵风特效:火球/炎暴
From: Gello
施放火球(一样可以修改),但当灵风聚焦出现时,施放炎暴。
-----------------------------------------------------------------------
/script local f for i=1,24 do f=f or strfind(UnitBuff("player",i) or "","Shadow_Teleport") end if not f then CastSpellByName
("Fireball") else CastSpellByName("Pyroblast") end
----------------------------------------------------------------------
11 灼烧触发节能施法后放奥术飞弹
平时释放灼烧(可以修改),当触发节能施法的时候,将自动施放奥术飞弹(或其他法术)。
note:考虑到服务器lag,你可能要等大概1S来等待节能施法的出现以便启动这个宏。当然如果你在一个新的,人少的服务器,并且还有台NB的
电脑,那就没问题了:)
-----------------------------------------------------------------------
/script local q; local t;for i=0,15,1 do t=GetPlayerBuffTexture(i); if (t and string.find(t, "ManaBurn")) then q=1;
break; end; end; if(q ~= nil) then CastSpellByName("Arcane Missiles(Rank 7)") else CastSpellByName("Scorch(Rank 7)"); end;
-----------------------------------------------------------------------
12 碎冰:冰系攻击
用1级寒冰箭攻击,当目标冻住了后,施放10级寒冰箭。一样的,你可以对法术进行调整。有的改版用灼烧代替了1级寒冰箭。
-----------------------------------------------------------------------
/script x=UnitDebuff("target");if(x=="Frost Nova" or x=="Frostbite") then CastSpellByName("Frostbolt(Rank 10)");end; else if
not(x=="Frost Nova" or x=="Frostbite") then CastSpellByName("Frostbolt(Rank 1)");end;end;
-----------------------------------------------------------------------
13 护符+奥术强化+气定神闲+炎暴
一键施法。但是不能在移动中使用,除非你想按2次。如果有短暂/赞达拉的话,放在装备栏的13(顶部饰品栏)和14(底部饰品栏)2个位置。
如果没有短暂/赞达拉,去掉第3和第4行。如果没有奥术强化,去掉第5和第6行。
note:1.10不能双开了~~~~~:(
-----------------------------------------------------------------------
/cast Presence of Mind
/script SpellStopCasting();
/script UseInventoryItem(13);
/script SpellStopCasting();
/cast Arcane Power
/script SpellStopCasting();
/cast Pyroblast(Rank 8)
-----------------------------------------------------------------------
如果上面的版本有些困难,试试以下版本:
----------------------------------------------------------------------
/script CBN=CastSpellByName;SSC=SpellStopCasting;CBN('Presence of Mind');SSC();UseInventoryItem(13);SSC();UseInventoryItem
(13);SSC();CBN('Arcane Power');SSC();CBN('Pyroblast')
-----------------------------------------------------------------------
下面这个Jered的版本有同样的作用不过只用气定,护符和炎暴。
-----------------------------------------------------------------------
/cast Presence of Mind
/script SpellStopCasting();
/script s,d,e=GetInventoryItemCooldown("player",13); t=GetTime(); if(s+d<=t and UnitIsEnemy("player","target")) then
UseInventoryItem(13); SpellStopCasting(); end; CastSpellByName("Pyroblast");
----------------------------------------------------------------------
14 护符后安全施法
From: Graguk's Warlock Macros
当且仅当敌对目标的生命值高于30%时,点这个宏将触发短暂/赞达拉护符(取决于你把哪个带在第1个饰品位)。施放火球术(12)
----------------------------------------------------------------------
/script local a=GetInventorySlotInfo("Trinket1Slot");local b,c=GetInventoryItemCooldown("player",a);if c <= 0 and
(UnitHealth("target") > 30 or UnitIsPlayer("target")) then UseInventoryItem(a);SpellStopCasting();end CastSpellByName
("Fireball(Rank 12)");
-----------------------------------------------------------------------
B 防御性法师宏
1 闪现:调整到背后视角
From: Bardog
这个宏能在闪现后将视角调整为背后视角。也可以自行调整视角改变角度。当闪现过一个目标后这个宏十分有用,能让你马上再一次看到目标。
更多的信息,可以看下面这个地址:
http://www.wowwiki.com/World_of_Warcraft_API#Camera_Functions
-----------------------------------------------------------------------
/script SpellStopCasting();
/cast Blink
/script FlipCameraYaw(180);
-----------------------------------------------------------------------
2 解除诅咒
From: Pyius
无须decursive,这个宏将自动将目标换成自身然后移除一个诅咒。然后目标切回上个目标。在[your characters name]中填入自己角色的名字。
-----------------------------------------------------------------------
/target [your characters name]
/cast Remove Lesser Curse
/script TargetLastEnemy();
-----------------------------------------------------------------------
3 冰环等级
如果有mana就施放最高级的冰环,如果没有就施放1级冰环。
-----------------------------------------------------------------------
/script if ((UnitMana("player"))<65) then CastSpellByName("Frost Nova(Rank 1)");end
/script if ((UnitMana("player"))>=65) then CastSpellByName("Frost Nova");end
-----------------------------------------------------------------------
4 安全冰环
From: They
当尝试冰环的时候,如果冰环CD超过19S或者短于2S,那么不会动作,如果在这段CD内,则使用急冷。
这个宏能阻止你贸然使用掉急冷,同时也允许你在紧急情况下使用冰环
-----------------------------------------------------------------------
/script SpellStopCasting(); local start, duration = GetSpellCooldown(57, 0); if ((GetTime() - start) <= 2) or ((GetTime() - start) >= 19) then CastSpell(57,0); else CastSpell(52,0); end
-----------------------------------------------------------------------
Llas提供的另一个版本合并了[Macro 3: Frost Nova Ranks]。工作原理如下:如果冰环失败,尝试1级冰环,然后急冷,如果还失败,则施放奥术爆炸。同样,如果冰环的CD将在5S内结束的话,不会启动急冷。
note:110后要用冰环的代码代替。5S的临界时间也可以修改。
-----------------------------------------------------------------------
/cast Frost Nova
/cast Frost Nova(Rank 1)
/script local s,t = GetSpellCooldown(110,"spell"); local l = t- (GetTime()-s); if (l > 5) then CastSpellByName("Cold Snap") ; end
/cast Arcane Explosion
----------------------------------------------------------------------
5 冰箱/急冷
Note by Rounced
按一下施放冰箱,如果CD尚未结束,启动急冷。再按一次释放冰箱。
note:1.10后不能用同一个宏来开/关冰箱了。
这个冰箱/急冷宏仍然能用但是只能让冰箱持续完10S。
-----------------------------------------------------------------------
/cast Iceblock
/cast Cold Snap
-----------------------------------------------------------------------
6 冰箱开/关宏
From: Cid, Delak
分别用2个宏来控制冰箱的开/关,以防止因为多次按冰箱导致的冰箱快速消失。
冰箱:
-----------------------------------------------------------------------
/script SpellStopCasting(); if (GetSpellCooldown(159,0) == 0) then CastSpell(159,0); end
-----------------------------------------------------------------------
取消冰箱:
-----------------------------------------------------------------------
/script if (GetTime() - GetSpellCooldown(159,0) < 10) then CastSpell(159,0); end
-----------------------------------------------------------------------
***应该将自己技能书内冰箱所在的的位置(ID)进行替换。打开技能书,从通用技能那一页开始数起,从左上方开始,第1个记为1,数到你想要设置的技能,此顺序数即为此技能ID。用(X,0)这个形式写入marco里面。***
在聊天窗口内输入以下语句来判断是否数对了:
-----------------------------------------------------------------------
/script DEFAULT_CHAT_FRAME:AddMessage(GetSpellName(X,0));
-----------------------------------------------------------------------
7 寒冰护体/魔法盾
当在寒冰护体的CD到的时候开启寒冰护体,如果CD没到,则开启魔法盾。
-----------------------------------------------------------------------
/cast Ice Barrier(Rank 4)
/cast Mana Shield(Rank 6)
-----------------------------------------------------------------------
8 自我绷带
自我绷带宏。需要将绷带在包中的位置注明,绷带后将自动切回上个目标。
----------------------------------------------------------------------
/script TargetUnit("Player")
/script UseContainerItem(Bag#, Item#);
/script TargetLastEnemy();
-----------------------------------------------------------------------
9 变羊宏
在5人副本中很有用,这个宏将通告你的队友你打算变羊的目标,这样就能避免队友去攻击要被变羊的目标。这个宏会用“Sheeping 性别/等级/目标姓名”这个格式把目标通告出来。例如:"Sheeping 女性 60 奥尼克希亚。"这个宏会在小队或是团队频道中说出来,具体取决于你在哪种队伍中。
----------------------------------------------------------------------
/script if UnitSex("target")==1 then g="female " else g="male " end;s="Sheeping "..g..UnitLevel("target").." %T";c="say";if GetNumRaidMembers()>0 then c="raid" elseif GetNumPartyMembers()>0 then c="party" end;SendChatMessage(s,c)
/cast Polymorph(Rank 4)
-----------------------------------------------------------------------
From Wyzik:
-----------------------------------------------------------------------
/script if UnitSex("target")==1 then g=" Female" else g=" Male" end;s="is sheeping level "..UnitLevel("target")..g.." %T";a=0;if GetPartyMember(1) then a=1;end;if a>0 then SendChatMessage(s,"EMOTE") end;
/cast Polymorph(Rank X)
-----------------------------------------------------------------------
10 停止施法-魔法反制宏
-----------------------------------------------------------------------
/script SpellStopCasting()
/script CastSpellByName("counterspell")
-----------------------------------------------------------------------
11 魔甲术/冰甲术转换
From: Foamyla
切换魔甲术/冰甲术。如果身上是魔甲,则换成冰甲。反之亦然。
-----------------------------------------------------------------------
/script local s="Mage" ; for i=1,16 do if strfind(UnitBuff("player",i) or "","MageArmor") then s="Frost" ; break ; end ; end ; CastSpellByName(s.." Armor")
----------------------------------------------------------------------
以上是关于Excel里的宏有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章