EXCELVBA的工程计算应用.docx_第1页
EXCELVBA的工程计算应用.docx_第2页
EXCELVBA的工程计算应用.docx_第3页
EXCELVBA的工程计算应用.docx_第4页
EXCELVBA的工程计算应用.docx_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EXCEL_VBA的工程计算应用(据Excel2000和Excel2003)目录1EXCEL_VBA的工程计算应用EXCEL_VBA工程计算述要10引言11入门12进阶23代码44精度55复数66矩阵67应用78帮助109发布10EXCEL工作表资源选录111工件表运算符112工件表数学函数112工件表逻辑函数124工程函数及其它函数12EXCEL_VBA资源选录131VB数据类型132VB运算符133VB内部函数(部分)144VB语句(部分)14使用Excel Link151Excel Link的安装和和设置152Excel Link函数使用方法153Excel Link函数表154Excel Link函数应用举例17EXCEL工作表工程计算规则191 工作表主要规格192 “帮助”菜单的使用193 数据194 公式20EXCEL_VBA工程计算述要0引言一个工程计算题目的算法,如果可以用一个或几个EXCEL数学表达式描述,显然,这个题目可以在EXCEL工作表中求得结果。所谓EXCEL数学表达式,是仅包含常数,EXCEL单元格(作为变量),EXCEL工作表数学函数和逻辑函数,EXCEL数学运算符(+,-,*,/,%,共 6种),等4类表达式元素的数学表达式。逻辑函数主要用于按条件选择算法的问题,例如按自变量分段计算,就需要使用包含if函数的EXCEL表达式。如果工程计算题目的算法的逻辑结构比较复杂,例如包含循环嵌套,分枝嵌套,循环和分枝互相嵌套等,在这种情况下,一般说来,不能或不方便用EXCEL数学表达式描述,这时,可以借助于EXCEL_VBA程序,求得题目的计算结果。使用VBA计算题目有3种办法:a. 在工作表上放置命令按纽,原始数据在工作表上,VBA程序进行计算,计算结果在工作表上显示。b. 创建窗体,在窗体上放置命令按钮和文本框,在文本框输入和输出数据。大多数工程计算,采用以上两办法是比较方便的。c. 在EXCEL_VBA的模块代码窗口中编写一个函数,在EXCEL工作表中,像调用内嵌函数一样调用这个函数。这一种办法,适用于一些具有通用性的特定类型的问题。如果用一个公式表示EXCEL_VBA与VB的关系,那就是“EXCEL_VBA = VB + EXCEL工作表单元格读写”,如果有一些关于VB的程序设计经验,又知道在EXCEL_VBA中怎样读写EXCEL工作表单元格,那就算会使用EXCEL_VBA了。1入门1. 创建宏 使用EXCEL_VBA进行工程计算,是通过运行宏进行的,所谓宏,就是一段子程序,后面我们会看到,创建宏有多种途径,现在,我们以比较直接的方式创建一个宏: EXCEL菜单:工具 / 宏 / 宏 “宏”对话框:a. 填入宏名,例如macro_myname,b. 创建宏 VBE代码设计窗口: 在“sub . end”框架内编写代码 关于代码编写的要点,见“3 代码”。 调试 按F8键单步运行,按F5键运行到断点处或运行完子程序,按Ctrl+F5键运行到光标处,等等,其它调试手段见“VBE菜单:调试”,需要时还可以在“监视窗口”或“本地窗口”中观察变量的值的变化。2.运行宏 运行宏有多种方式: 在“宏”对话框中运行宏 EXCEL菜单:工具 / 宏 / 宏 “宏”对话框:a. 选中宏名,例如macro_mtname,b. 执行。 用窗体按钮运行宏 为了方便地执行宏,可在EXCEL工作表上创建一个窗体按钮,步骤如下: EXCEL菜单:视图 / 工具栏:选中“窗体”,弹出“窗体”工具栏。 单击“窗体”工具栏上的“按钮”图标,使图标呈压下状态,然后在工作表上画一个适当尺寸的按钮,图标画完毕后,会立即出现一个“指定宏”对话框:a. 选中宏,例如macro_myname,b. 确定,以后单击这个窗体按钮即可执行宏macro_ myname,如果错过了“指定宏”对话框,右击按钮,快捷菜单:指定宏,重新出现“指定宏”对话框。 为了直观起见,右击按钮,快捷菜单:编辑文字,修改按钮上的名称,修改好后,将光标移出即可。 用图片运行宏 在工作表上插入一幅图片,右击图片,快捷菜单:指定宏 “指定宏”对话框: 选中宏,例如选中macro_myname, 确定,以后单击该图片,宏macro_ myname被执行。 用命令按钮运行宏 从“EXCEL菜单:视图”中调出“Visual Basic”工具栏和“控件工具箱”工具栏。 单击“控件工具箱”工具栏中的“命令按钮”图标,“设计模式”图标变为按下状态,在工作表适当的位置画命令按钮,右击该命令按钮,快捷菜单:命令按钮 对象 / 编辑,修改该命令按钮的名字,例如将Command Button1改为CB1。 双击命令按钮CB1,进入VBE的代码窗口,为命令按钮CB1编写代码,并按前述方法进行调试。 a. 在windows任务栏上单击Excel任务标识,返回工作表,b. 在“Visual Basic”工具栏上或者在“控件工具箱”工具栏上,单击按下状态的设计模式图标,使其弹起,退出设计模式,c. 单击命令按钮CB1,即可运行刚才编写的程序,如果需要修改程序,单击设计模式图标,使其呈按下状态,进入设计模式,双击命令按钮,进入代码窗口进行修改。2进阶1.VBE(Visual Basic Editor)窗口及其用途 本地窗口调试过程中,自动显示各个变量的值 监视窗口调试过程中,添加变量或表达式后,显示变量或表达式的值 立即窗口 程序中用Debug.Print输出的内容在此显示,如Debug.Print 这是一行试验文字。 当代码是Break模式时,查看对象和变量的状态。 在此窗口中,用?+语句可以看到运行的结果,在很多情况下比用msgbox方便多了。 对象窗口令光标在一个代码窗口中,VBE菜单:视图 / 对象窗口,从VBE转向选定对象窗口。 工程资源管理器(工程窗口)自动列出工程中的Microsoft Excel对象,窗体,模块,类模块。 属性窗口设定对象相关的属性。 代码窗口编写和查看VBA代码。 对象浏览器查看所有对象库、特定对象或用户自己的工程,包括对象列表和对象成员列表。以上 8 种窗口,都可以“VBE 菜单:视图”打开。2.从工作表进入VBE EXCEL菜单:工具 / 宏 / Visual Basic编辑器,或者 单击“Visual Basic工具栏”上的“Visual Basic编辑器”图标。3.从工作表进入VBE的代码窗口 EXCEL菜单:工具 / 宏 / 宏 “宏”对话框: 输入宏名, 创建。 EXCEL菜单:工具 / 宏 / 宏 “宏”对话框: 选中已存在的宏, 编辑。 在设计模式下,双击工作表上的控件。4.在VBE中进入代码窗口 从工程窗口双击一个模块名,例如VBAProject(Book1)的模块1,进入“Book1-模块1(代码)”窗口。双击一个Sheet名,例如VBAProject(Book1)的Sheet1,进入“Book1 - Sheet1(代码)”窗口。双击一个ThisWorkbook,若ThisWorkbook属于VBAProject(Book1),进入“Book1 - ThisWorkbook(代码)”窗口。双击一个窗体名,例如VBAProject(Book1)的UserForm1,进入“Book1 UesrForm1(UesrForm1)”窗口。 从窗体窗口 双击一个窗体。 双击窗体上的一个控件。5.从VBE返回工作表窗口 返回活动窗口:a. 单击窗口右上角的关闭图标,b.VBE菜单:文件 / 关闭并返回到Micrisoft Excel,c. 在windows任务栏上单击Excel任务标识,d. 在对象窗口选中ThisWorkBook对象,VBE菜单:视图 / 对象窗口。 返回指定窗口:在对象窗口选中一个Sheet对象,VBE菜单:视图 / 对象窗口。6.创建模块在VBE的工程窗口中,选中一个工程,例如VBAProject(Book1),VBE菜单:插入 / 模块,在VBAProject(Book1)下层添加了一个模块名,在VBE右半边自动打开该模块的代码窗口。在同一个工作簿中,在工作表中记录的宏或创建的宏,都在同一个单独的模块中。这个模块在第一次记录宏或创建宏时被创建,后续记录和创建的宏也在这一个模块中。这个模块的名字可以从VBE的工程窗口中观察到。在记录宏时和创建宏时产生的模块,与用菜单命令插入的模块相比,不论性质还是形式都是一样的。7.创建窗体在工程窗口中选中一个工程,例如VBAProject(Book1),VBE菜单:插入 / 用户窗体,在VBAProject(Book1)下层添加了一个窗体名,在VBE右半边自动打开该窗体的窗口,同时打开VBE控件“工具箱”。在窗体窗口为活动窗口的情况下,如果看不到VBE控件“工具箱”,VBE菜单:视图 / 工具箱,可调出VBE控件“工具箱”,选中窗体或者窗体上的控件,右键,快捷菜单:属性,可以在“属性”窗口中修改窗体或控件的属性 。8.创建对象的事件子程序进入 工作簿 | 工作表 | 窗体 |窗体 的代码窗口,在“对象”小窗口中,拉出一个对象,在“过程”小窗口中拉出一个事件,在主窗口中就自动建立一个关于特定对象的事件子程序框架。变换对象和事件的组合,又建立一个。9.创建过程(Procedure)光标在任意 工作表 | 工作薄 | 模块| 窗体 的代码窗口中,VBE菜单:插入 / 过程 “添加过程”对话框: 输入名称, 在“类型”组中选“子程序”, 在“范围”组中选“公共的”或“私有的”, 确定,在代码窗口中自动建立“Public Sub.End”或“Private Sub.End”框架,同时,过程小窗口中“(声明)”字样变成了刚刚输入的子程序名。若类型选为“函数”,则过程框架为“Public Function.End”或“Private Function.End” 。过程框架也可以在代码窗口中用手写建立。Static Sub 过程名 (ByRef | ByVal参数) 语句End SubCall 过程名(参数) 调用过程Static Funtion函数名 (ByRef | ByVal参数) 语句 函数名 = 表达式 返回值End Sub变量名 = 函数名(参数) 调用函数在VBA中创建的函数,除了可以在VBA程序中被调用外,还可以在EXCEL中作为自定义函数,像调用内嵌函数一样被调用。函数中只能以返回值的形式写单元格,而不能直接写单元格。如果在EXCEL中写公式时选定的是单元格区域,则返回函数值的形式应该是:函数名 = 数组名,数组的行列数应与选定的单元格区域相一致。在 工作簿 | 工作表 | 模块 的代码窗口中建立Public子程序过程之后,子程序名将列入“EXCEL菜单:工具 / 宏 / 宏 宏对话框” 。若缺省调用属性,对于Public 和Private,默认为Public, 对于ByRef和ByVal,默认为ByRef,ByRef表示传地址, ByVal表示传数值。3代码1.EXCEL_VBA的特点 继承了VB的语言元素,可视化资源(窗体和控件),可视化设计方法。 编辑器界面与VB基本相同。 增加了与EXCEL工作簿,工作表,单元格相关的对象,属性,方法,事件。 程序设计思路,除了像VB那样以窗体为依托外,更可以自然地以工作表为依托。 不能生成exe文件,但可以制作xla文件,发布其中的自定义函数,而且可以加密码防止阅读与修改。2.单元格和单元格区域表示法 单元格 Sheets(sheet2).Range(A3) 无Sheets()时 ,默认sheet1 A3 可以用代替Range(),将左式表示为A2 Sheets(sheet2).Range(C3).Cells(4,2) 行列式样式,Cells(行,列),无Sheets()时,默认sheet1, 无Ramge()时,默认A1单元格为1行1列 Range(B3).Offset(2,3) 偏移样式,Offset(行, 列) ,需要指定基准单元格 单元格区域 Range(A1:C10) 仿上,将左式表示为A1:C10 Cells(row,column) row和column是变量,方便用程序的方法访问单元格区域 单元格命名 Range(A3).Name = name 原点映射 Set origin = Range(C3) 设置原点,从编写程序的角度看,也可以用命名的方法代之 Origin.cells(2,3) 限定C3单元格为1行1列 Origin.offset(2,3) 限定C3单元格为基准单元格 以下4种形式的赋值语句,其值均为(A1+B2)/2,前2种是记录宏中用的形式,显然不如后2种直观方便: Range(c3).FormulaR1C1 = =(R1C1+R1C2)/2 R?C?表示绝对行列 Range(c4).FormulaR1C1 = =(R-3C-2+R-3C-1)/2 R?C?表示相对相于c4的行列 Range(c2).Formula = =(A1+B2)/2 Range(c2) = =(A1+B2)/2 3.变换工作表Sheets(2).Activate 变换当前工作表为sheet2Sheets(2).Select 变换当前工作表为sheet2,另一种方法 4.显示和隐藏窗体显示窗体UserForm1.Show vbModal | vbModeless隐藏窗体Unload Me 或 Unload UserForm1为了在打开工作簿时窗体可见,双击导航窗口中的TithWorkbook对象,在对象Workbook的Open事件子程序中加入显示窗体的语句。显示窗体语句中,方括号中的常量vbModal和vbModeless,可任选其一,若都不选默认为选vbModal 。vbModal表示窗体的显示方式是“模式的”,在这种方式下,操作不能从该窗体上切换到另外的窗体上或者工作表上,除非将该窗体隐藏,vbModeless表示窗体的显示方式是“无模式的”,则没有上述限制。 5.显示和隐藏工作表(用2组语句做为示例) 以下3行在Open事件程序中或工作表命令按钮程序中Application.Visible = True 将Application的可视性设为真,即显示工作表Application.Visible = False 将Application的可视性设为假,即不显示工作表UserForm1.Show 显示窗体 以下2行在窗体按钮程序中Unload Me 隐藏窗体Sheet2.Select 显示工作表6.导出的数学函数VBA没有内建反余弦函数和反正弦函数,这两个函数可以用反正切函数atan表示为和,称为导出函数。全部双曲函数和反双曲函数VBA中都没有内建,按定义用exp,log,sqr导出。详细的导出函数表见“Visual Basic语言参考 / 组 / 导出的数学函数” 。由于工作表中内建的数学函数比较“齐全”,可以按引用工作表函数的方法进行引用,这样就可以不考虑导出函数了。4精度integer:双字节整型,数值范围从 -32,768 到 +32,767,通常用于计数,不必考虑精度问题。Double:双精度浮点数,负数范围从-1.79769313486231E308 到-4.94065645841247E-324,正数范围从4.94065645841247E-324到 1.79769313486232 E308。工程计算中,对运算结果有效数字的要求大多数为4位,15位有效数字经过若干次运算后,累积的运算误差保证4位有效数字应该是没有什么问题的,考虑参与运算的原始数据的误差,尚需进行详细的误差分析,才能确切地得出运算结果的效数字的位数。Decimal:十进制数,负数范围从-79,228,162,514,264,337,593,543,950,335 到 -0.000 000 000 000 000 000 000 000 000 1。正数范围从 0.000 000 000 000 000 000 000 000 000 1 到 79,228,162,514,264,337,593,543,950,335。Decimal 数据类型只能在 Variant中使用,也就是说,不能声明一变量为 Decimal 的类型。不过可用 Cdec 函数,创建一个子类型为 Decimal 的 Viu1 = CDec(1.1415E+28) : cniu2 = Cdec(11.2) : cniu3 = CDec(niu3)cniu3 = cniu1 / cniu2Decimal数据能在文本框(TextBox)中显示29位数字,但在单元格中只能显示15位数字。如欲在单元格中显示29位数字,应用命令CELL.NumberFormatLocal = 将单元格设为文本,命令中CELL可以为range(a1)或cells(2,3)等。Decimal因为不使用指数,数值的变化范围比double要小得多,若数值为很小的小数,有效数字位数将很少。在需要较多的有效数字的情况下,可以考虑使用MATLAB的符号数学。5复数EXCEL_VBA中没有复数数据类型,也没有计算复数的函数,如果需要进行复数计算,EXCEL菜单:工具 / 加载宏 “加载宏”对话框: 选中“分析工具库-VBA函数”, 确定,即可加载复数函数。在EXCEL工作表中,像使用内建函数一样使用所加载的复数函数。在VBA程序中,要按照引用工作表函数的方法使用,同时,因为VBA中没有复数类型的变量,计算结果只能赋给Range对象而不能赋给变量,例如Range(b2) = =imsin(a1)。引用工作表函数的表达式,例如 =imsin(a1) ,是一个字符串,字符串中的单元格名称无法在程序运行中改变。解决这个问题的办法是:用一个变量存储单元格的列名(如a1的a)的ASCII码,用一个变量存储单元格的行号(如a1的1),然后,用函数Chr将ASC码转换为字符,用函数Cstr将行号转换为字符串,用连接符“+”或者“&”将字符串连接起来,使用“&”连接时,可以使用Cstr函数,也可以不用Cstr函数而直接用数值。这样,就可以在程序运行中改变单元格的名称了。 i1 = 1 Range(a1) = =complex(0.67,0.38) Range(a1).Cells(1, 2) = =imsin( + Chr(65) + CStr(i1) + ) 此行及以下,共3个语句的结果是相同的 Range(a1).Cells(2, 2) = =imsin( & Chr(65) & i1 & ) Range(a1).Cells(3, 2) = =imsin(a1)以下是引用复数函数的几种形式,从程序的书写来说,还是Range(B4) = =IMSIN(A1)的形式方便。在工作表中:=Complex(3,4) 返回 3+4i=Complex(3,4,”i”) 返回 3+4i=Complex(3,4,”j”) 返回 3+4jRange(A1) = =COMPLEX(0.04,0.3) Range(B1).FormulaR1C1 = =IMSIN(RC-1) Range(B2).FormulaR1C1 = =IMSIN(R1C1) Range(B3) = =IMSIN(R1C1) Range(B4) = =IMSIN(A1)6矩阵VBA中没有矩阵计算语句,也没有矩阵计算函数,所以矩阵计算需要自己编写矩阵计算函数。但是,工作表有3个内建矩阵函数:minverse求矩阵的逆,mmult求矩阵的积,transpose求转置矩阵。因为数据通常在工作表中,所以可以用引用工作表函数的方式,在VBA程序中计算矩阵。此外还有一个计算行列式的函数mdeterm,但不属于矩阵范畴。Range(A7: B8).FormulaArray = =MMULT(R1C1:R2C2,R1C4:R2C5) 矩阵运算函数用法a11:j20.FormulaArray =sin(a1:j10) 对区域a1:j10的每一个单元格求正弦值a11:b12.FormulaArray =A1:B2*C1:D2 求相同区域A1:B2和C1:D2中对应单元格的乘积如果感觉引用工作表函数不方便,可以把工作表单元格区域读入VBA数组,处理后再写入工作表单元格区域。Dim niu(1 to 2,1,1 to 3) Dim为变量说明语句,此处说明数组,共2行3列for i = 1 to 2 将以单元格a1为第1行第1列的区域读入数组niu for j = 1 to 3 niu(i, j) = range(a1).cells(i, j) nextnextfor i = 1 to 2 将数组niu中的数据写入以单元格b4为第1行第1列的区域 for j = 1 to 3 range(b4).cells(i, j) = niu(i, j) nextnext 7应用1.为数组赋初值举例 Option Base 1 数组下标从1使开始,此语句写在过程之外 Sub aa() Dim niu As Variant niu = Array(10, 1.01, 5.02, 25.03, 407.05) a1 = niu(1): a2 = niu(2): a3 = niu(3) a4 = niu(4): a5 = niu(5) End Sub2.在VBA程序中表达在工作表中选中的单元格区域 * 用途: 交换两个单元格区域的内容 用法:先选择一个区域, 按住Ctrl键, 再选择另一个区域, 然后运行宏 * 主程序 Dim XR As Range, YR As Range Sub jh() If Selection.Areas.Count = 2 Then Set XR = Selection.Areas(1) Set YR = Selection.Areas(2) If Not Intersect(XR, YR) Is Nothing Then doen = MsgBox(选择区域有重迭! & vbCrLf & _ 对换后区域将有部分重迭! & vbCrLf & 是否继续?, vbYesNo) MsgBox (选择区域有重迭!) Range(a1).Select Exit Sub Else If XR.Rows.Count = YR.Rows.Count And XR.Columns.Count = YR.Columns.Count Then Call jhx(XR, YR) Range(a1).Select Else MsgBox 选择的两个区域不相同! Range(a1).Select End If End If Else MsgBox (请选择2个区域) End If End Sub 子程序 Sub jhx(ax, ay) SZ1 = ax.Formula SZ2 = ay.Formula ax = SZ2 ay = SZ1 End Sub3.在VBA程序中表达在工作表中选中的单元格区域 * 用途: 交换两个单元格区域的内容 用法: 首先选择一个区域, 按住Ctrl键, 再选择另一个区域, 然后运行宏 * 主程序 Dim XR As Range, YR As Range Sub jh() If Selection.Areas.Count = 2 Then Set XR = Selection.Areas(1) Set YR = Selection.Areas(2) If Not Intersect(XR, YR) Is Nothing Then doen = MsgBox(选择区域有重迭! & vbCrLf & _ 对换后区域将有部分重迭! & vbCrLf & _ 是否继续?, vbYesNo) MsgBox (选择区域有重迭!) Range(a1).Select Exit Sub Else If XR.Rows.Count = YR.Rows.Count And XR.Columns.Count = YR.Columns.Count Then Call jhx(XR, YR) Range(a1).Select Else MsgBox 选择的两个区域不相同! Range(a1).Select End If End If Else MsgBox (请选择2个区域) End If End Sub 子程序 Sub jhx(ax, ay) SZ1 = ax.Formula SZ2 = ay.Formula ax = SZ2 ay = SZ1 End Sub4.编写自定义函数 * 用途: 矩阵乘法 用法: 按ctrl+shift+enter键确定 * Function matmult(mul1 As Object, mul2 As Object) Dim arr_prod() As Double 定义一个作为中间变量的数组,动态数组 Dim r1 As Integer, c1 As Integer Dim r2 As Integer, c2 As Integer Dim rs As Integer, cs As Integer Dim i As Integer, j As Integer, k As Integer r1 = mul1.Rows.Count 计算矩阵的行列数 c1 = mul1.Columns.Count r2 = mul2.Rows.Count c2 = mul2.Columns.Count rs = Selection.Rows.Count 计算返回值区域的行数 cs = Selection.Columns.Count 计算返回值区域的列数 以下判断参数的合理性 If c1 = r2 Then mul1的行数和mul2的列数要符合规定 If rs = r1 And cs = c2 Then 返回值行数和列数要符合规定 GoTo master_mult 执行主程序 Else 否则退出 MsgBox (返回值区域行列数不合理!) Range(a1).Select Exit Function End If Else 否则退出 MsgBox (参数区域行列数不合理!) Range(a1).Select Exit Function End If 以下是主程序: master_mult: ReDim arr_prod(1 To r1, 1 To c2) As Double For i = 1 To r1 为数组赋初值 For j = 1 To c2 For k = 1 To c1 arr_prod(i, j) = 0 Next Next Next For i = 1 To r1 计算矩阵乘积 For j = 1 To c2 For k = 1 To c1 arr_prod(i, j) = arr_prod(i, j) + mul1.Cells(i, k) * mul2.Cells(k, j) Next Next Next matmult = arr_prod 将数组中的矩阵乘积由“函数名”返回,整体赋值 Range(a1).Select End Function8帮助1.编辑VBA程序时,选中一个帮助主题,按F1键,可得到联机帮助。2.VBE菜单:视图 / 对象浏览器 “对象浏览器”窗口,选定一个类或者成员,按F1键,可得到联机帮助。3.在工作表中记录宏,然后编辑生成的宏,从中可以看出相关代码的编写方法。4.使用Office的EXCEL帮助文件:安装目录office2052XLMAIN9.CHM,参阅这个文件中的“编程信息”。9发布1.建立函数新建一个Excel工作簿,进入VBE ,插入一个模块,假定为“模块1”,在打开的代码窗口中,添加如下代码,这是两个以“度”为单位的三角函数,一个是正弦函数,一个是余弦函数。Const pi As Double = 3.14159265358979Function DGsin(degree As Double) DGsin = Sin(degree / 180) * pi)End FunctionFunction DGcos(degree As Double) DGcos = Cos(degree / 180) * pi)End Function2.添加函数说明VBE菜单:视图 / 对象浏览览器 “对象浏览器”窗口,在“工程 / 库”下拉列表框(有上下两个下拉框,上面的那一个)中,下拉选择“VBAProject”,在“类”列表中点击“模块1”,在“模块1”的成员列表中选中“DGsin”,右键,快捷菜单:属性 “成员选项”对话框:在“描述”中输入关于Dgsin的说明:以度为单位的正弦函数, 参数degree是角度,输入完毕,确定,再选中“DGcos”,进行同样的操作,只是说明改为:以度为单位的正余弦函数, 参数degree是角度,当模块中还有其它函数时,对每个函数添加说明。3.保护VBE菜单:工具 / VBAProject属性 “VBAProject-工程属性”对话框:“保护”选项卡:选中“查看时锁定工程”,写入密码,确定。4.保存为xla文件从VBE返回Excel界面,EXCEL菜单:文件 / 另存为 “另存为”对话框:文件类型选“Microsoft Office Excel加载宏(*.xla)”,文件名写为“DGfun”,确定,这时Excel会在默认的AddIn位置保存DGfun.xla,保存成功后关闭Excel。 5.加载宏关闭Excel后重新打开,对于Excel 2007,EXCEL菜单:Excel 选项 / 加载项,在“管理”中选择“Excel 加载项”并点击“转到”;对于Excel 2003及之前版本,EXCEL菜单:工具 / 加载宏 “加载宏”对话框,选中“DGfun”,确定。安装加载宏后,函数DGsin和DGcos将出现在EXCEL函数表的自定义类中。自定义函数在VBA程序中应按引用工作表函数的方法使用,同时,赋值式的左端必须是一个Range对象,而不能是一个变量。EXCEL工作表资源选录1工件表运算符14EXCEL_VBA的工程计算应用算术运算符1.+加2.- 减3.* 乘4./ 除5.% 百分比6. 乘方比较运算符1.=等于2.大于3.=大于等于5.=小于等于6.不等于文本串运算符& 读ampersand,连接文本引用运算符1.: 冒号,区域运算B5:B152., 逗号,联合操作SUM(B5:B15,D5:D15)运算符的优先级 高:引用,引用负号,如 1,%百分比乘幂* 和 /乘和除+ 和 加和减&连接文本 低= = 比较2工作表数学函数1.COS余弦2.SIN正弦3.TAN正切4.ACOS反余弦5.ASIN反正弦6.ATAN反正切7.ATAN2按象限的反正切8.COSH双曲余弦9.SINH双曲正弦10.TANH双曲正切11.ACOSH双曲反余弦12.ASINH双曲反正弦13.ATANH双曲反正切14.EXPe的幂15.POWERx的y次幂16.SQRT平方根17.LN自然对数18.LOG任意底数的对数19.LOG10常用对数20.CEILING按指定基数,向绝对值增大的方向取整21.FLOOR按给定基数,向绝对值减小的方向取整22.EVEN将绝对值取为偶数23.ODD将绝对值取为奇数24.INT向下取为整数以下4个函数25-28的说明中,用“.”代替“指定小数位数将绝对值圆整”12个字,逗号后为限制条件。25.TRUNC.,直接26.ROUND.,以四舍五入方式27.ROUNDDOWN.,向绝对值减小方向28.ROUNDUP.,向绝对值增大方向29.ABS绝对值30.COMBIN组合数31.DEGREES弧度的角度32.FACT阶乘33.MOD余数34.PI15位圆周率35.PRODUCT乘积36.RAND0-1的随机数37.ROMAN罗马数字38.SIGN符号39.SUBTOTAL分类汇总40.SUM和41.SUMIF符合指定条件的单元格中的数据和42.SUMPRODUCT若干数组中对应元素的乘积和43. SUMSQ平方和44.SUMX2MY2两数组中对应元素平方差的和45.SUMX2PY2两数组中对应元素平方和的和46.SUMXMY2两数组中对应元素差的平方和47.MDETERM行列式的值48.MINVERSE矩阵的逆49.MMULT矩阵的积50.TRANSPOSE转置矩阵,“粘贴函数”表中未列函数48,49,50的使用方法 这3 个函数的返回值都是矩阵,返回值区域的行列数应与返回的矩阵的行列数相同。 用直接键入的方式引用这3个函数,要用Ctrl+Shift+Enter确定,用“粘贴函数”的方式引用这3个函数,在 “公式选项板”上输入公式要求的参数后,要按住Ctrl+Shift键,再单击“确定”按钮。3工作表逻辑函数1.AND与2.FALSE假3.IF条件4.NOT非5.OR或6.TRUE真4工程函数及其它函数EXCEL菜单:工具 / 加载宏 “加载宏”对话框:选中“分析工具库-VBA函数”,确定,即可加载“分析工具库”,加载后,函数表中增加了关于复数运算的函数和一些其它函数。“工程”类函数全部是增加的1.BESSELI返回已修改的Bessel函数In

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论