003.VBA过程和函数干货调用inputboxvba

大家好,我是永不止步的老牛。上一篇我们介绍了VBA的编辑器,本篇我们介绍VBA过程和函数以及MsgBox函数、InputBox函数、InputBox方法(用代码给单元格设置公式)。

过程以Sub开头,以EndSub结束,过程执行一些代码但不返回值。

函数以Function开头,以EndFunction结束,函数执行一些代码并返回值,函数可以从过程中执行,也可以在Excel工作表中使用,就像Excel内置函数一样在公式中直接使用,Excel中内置了很多函数,但是总有内置函数无法实现的需求,我们可以自己编写代码去实现,建立一些Excel没有的函数。

我们以一个例子开始我们今天的学习,身体质量指数BMI是常用的衡量人体肥胖程度和是否健康的重要标准,BMI正常范围为18.5-23.9,低于18.5为体重过轻,高于23.9为体重过重,BMI=体重(公斤)除以身高的平方(米的平方)。

1.编写一个过程

在名称处输入“CalculateBMI”,点击确定,关闭添加过程窗体,VBA代码窗口增加了一个过程:PublicSubCalculateBMI()

EndSub

如果把Public替换成Private,那么过程只能被“BMI计算”模块里的其它过程调用,而不能被其它模块里的过程调用。

我们在过程体内,就是PublicSubCalculateBMI()和EndSub之间,输入计算BMI的代码,首先定义3个变量BMI、Height和Weight,并给Height和Weight赋值,然后计算BMI数值并将BMI值输出至立即窗口,最后用MsgBox函数提示计算完成及BMI值。

PublicSubCalculateBMI()

DimBMIAsSingle'BMI值

DimHeightAsSingle'身高值

DimWeightAsSingle'体重值

Height=1.81

Weight=66

BMI=Weight/(Height)^2

Debug.PrintBMI

MsgBox"身体质量指数BMI计算完成,BMI为"&BMI,vbOKOnly+vbInformation,"提示"

将光标定位在过程代码的任何地方,按F5运行过程,立即窗口会输出BMI值,并弹出对话框显示BMI值。

“/”是除运算符,“^”表示计算平方,Debug.PrintBMI是将变量BMI的值输出到立即窗口,MsgBox是对话框函数,提供给用户一些信息,并支持人机交互。

2.使用MsgBox函数

MsgBox函数语法为:MsgBox(prompt[,buttons][,title][,helpfile,context])[]内的参数可以省略,具体参数的含义、参数数值、返回值后面用表格列举,MsgBox函数可以有返回值,有2种调用方式:

A.MsgBox"消息",vbOKOnly,"提示"

B.iReturn=MsgBox("确认删除该条数据吗?",vbYesNo+vbQuestion,"提示")

A相当于只是在界面上显示了一个对话框,提示用户一些信息,用户点击按钮后不做任何处理。

B相当于在界面上显示了一个对话框,将用户点击不同的按钮的值返回给变量iReturn,然后程序可以根据iReturn的值决定后续代码如何执行。

MsgBox函数参数说明如下图:

buttons参数值设置如下图:

buttons参数的

用每组数字的一个值加起来就是最终buttons的值。

返回值如下图:

MsgBox函数我们先介绍到这里,我们继续我们的编程,前面编写的代码中我们直接给定了身高和体重数值,我们现在需要让用户输入身高和体重,我们将代码修改成这样:

Height=InputBox("请输入自己的身高")

Weight=InputBox("请输入自己的体重")

MsgBox"身体质量指数BMI计算完成,BMI为"&BMI,vbOKOnly+vbInformation+vbMsgBoxRight,"提示"

将光标定位在过程代码的任何地方,按F5运行过程,会先弹出对话框要求输入身高,输入并确定后,再弹出对话框要求输入体重,输入并确定后,立即窗口会输出BMI值,并弹出对话框显示BMI值。这里我们使用了InputBox函数让用户输入信息。

3.使用InputBox函数

InputBox函数语法:InputBox(prompt,[title],[default],[xpos],[ypos],[helpfile,context])

[]内的参数可以省略。

Prompt:显示在对话框上的信息。

Title:对话框的标题,默认的标题是MictosoftExcel。

xpos和ypos:对话框在屏幕上出现的位置,如果忽略,显示在当前窗口的中央,xpos决定对话框在屏幕上从左起的水平位置,忽略它时,对话框显示在水平中央,ypos决定对话框在屏幕从上而下的竖直位置,忽略它时,对话框就在竖直大约三分之一的位置。

helpfile和context:和本章前面介绍的MsgBox函数相应的参数使用方法一样。

具体参数说明见下表:

明白InputBox函数的用法后,我们将上述代码再修改一下,不使用InputBox函数的默认标题“MictosoftExcel”。

Height=InputBox("请输入一个数值","输入自己的身高")

Weight=InputBox("请输入一个数值","输入自己的体重")

4.编译一个函数,并在过程及公式中使用

过程我们先介绍到这里,我们看一下函数,函数也是一种过程,只是函数能返回值,函数只能由过程调用或在Excel工作表的的公式中使用,而不能像过程一样用F5或菜单“运行”执行。

函数的建立可以像前面介绍的建立过程一样,通过菜单“插入”-“模块”,选择“函数”来建立。

也可以自己手工编写代码来建立,我们在模块“BMI计算”的代码窗口,直接输入如下代码:

PublicFunctionGetBMI(w,hAsSingle)AsSingle

GetBMI=w/(h)^2

EndFunction

关键字Function后面是函数名称GetBMI和一对空括号。括号里的w和h是传递给函数的参数,函数以Function开头,以EndFunction语句结束。

Public表示这个函数可以在所有模块的所有过程里访问,在Excel公式中也可以使用,如果将Public换成Private,那么函数只能被同一模块里的其它过程调用,而不能被其它模块里的过程调用,也不能被Excel公式中使用。

最后面的AsSingle表示函数返回值的数据类型,如果省略,默认成Variant。

函数的返回值就是把要返回的内容赋值给函数名称。

如果给参数前加关键字Optional,那么表示这个是可选参数,就是说调用函数时,可以传递这个参数值,也可以不传递,注意的是,如果某个参数设置成可选参数,那么这个参数之后的参数必须都是可选参数。

函数我们先简单介绍这么多,还有按地址和按值传递参数等内容,后续我们用到时再细说。

写好函数后,我们可以修改前面的过程CalculateBMI,在过程中调用函数GetBMI,代码如下:

BMI=GetBMI(Weight,Height)

F5运行,结果和刚才的一样。

我们看一下Excel公式中如何引用函数GetBMI。

大家现在已经了解了过程和函数的写法,以及MsgBox函数InputBox函数的用法。

5.使用InputBox方法

前面说的InputBox函数属于VBA库,在Excel库中有一个InputBox方法,大家可以在对象浏览器中搜索InputBox,搜索结果可以看到2个InputBox,分别属于VBA和Excel。

InputBox方法的语法:expression.InputBox(Prompt,Title,Default,Left,Top,HelpFile,HelpContextID,Type)

expression:表示Application对象的变量。

参数说明如下图:

除了最后一个参数Type,其余参数基本和InputBox函数对应,我们重点说一下Type参数,Type参数的值为下表中的数据:

Type设置可以允许用户输入的数据类型,可以是一个值,也可以将多个值相加。假如允许输入文本和数字,Type就设置为1+2。

如果Type为0,InputBox返回文本格式的公式,如果Type为4,InputBox返回True或False,如果Type为8,InputBox返回Range对象,如果是8,必须使用Set语句,将结果分配给Range对象,

如果不使用Set语句,此变量就会被设置为区域中的值,而不是Range对象本身。

如果使用InputBox方法提示用户输入公式,必须使用FormulaLocal属性,将公式分配给Range对象。

InputBox方法与InputBox函数的区别在于,前者可以对用户输入进行选择性验证,并能与Excel对象、错误值和公式结合使用。Application.InputBox调用的是InputBox方法;不带对象限定符的InputBox调用的是InputBox函数。

如果用户输入的内容和Type设置的不相符,会出提示,确认后,继续等待用户输入。

用下面的示例展示一下Type为8时,使用和不使用Set的区别,代码如下,区别效果见动图:

PublicSubTestInputBox()

DimValue

DimValue2

SetValue=Application.InputBox(Prompt:="请选择单元格",Type:=8)

SetValue2=Application.InputBox(Prompt:="请选择单元格",Type:=8)

MsgBoxValue

我们在演示一下Type为0时,如何给一个单元格设置我们动态输入的公式,代码如下,效果见动图:

PublicSubTestInputBox2()

Value=Application.InputBox(Prompt:="请输入BMI公式",Type:=0)

THE END
1.二基础篇——显示对话框(3)3、MsgBox 函数 在对话框中显示消息,等待用户单击按钮,并返回一个Integer告诉用户单击哪一个按钮。 语法:MsgBox(prompt[,buttons] [,title] [,helpfile,context]) 除第一个参数,其余都可以省略,参数意义与InputBox函数相同。 Buttons:指定显示按钮的数目及形式,使用的图标样式,默认按钮是什么以及消息框的强制回应https://www.jianshu.com/p/9d3c1c99c721
2.ExcelVBA编程中有哪些常用的英文词汇儿4 Msgbox 输出函数 5 box输入函数 6 Cells所有单元格 7 Sheets工作表集合(含定义名称、Chart表等) 8 Worksheets Excel工作表集合 9 Workbooks工作簿集合 10 Thisworkbook: 代码所在的工作簿 11 Activeworkbook活动工作簿 12 Ativecell活动单元格 13 Dim定义变量关键字 https://www.meipian.cn/38kedyc5
3.VB中MsgBox函数的使用方法详解(vb中masbox函数怎么用)五、注意事项 在使用MsgBox函数时,需要注意以下几点:不要在prompt字符串中使用回车符(chr(13))或换行符(chr(10)),因为这会导致消息框显示异常;确保buttons参数的设置与所提供的按钮类型相匹配,以避免显示不正确的按钮或图标;合理使用title参数,以提供更清晰的用户界面。 https://www.zaixianjisuan.com/jisuanzixun/vbzhongmsgboxhanshudeshiyongfangfaxiangjie.html
4.MATLAB的msgbox对话框可以设置回调函数吗?编程语言很抱歉,MATLAB 2014a版本的msgbox函数不支持直接设置回调函数。但是,你可以使用其他方法来实现这个功能,如使用模态对话框和waitbar函数。 首先,你可以使用MATLAB的inputdlg函数创建一个模态对话框,以便在点击确定按钮后才继续执行后续代码。例如: button = questdlg('开始计算', '提示', '确定', '取消', '确定');https://ask.csdn.net/questions/8046523/54436683
5.下载《ExcelVBA基础入门》(赵志东编)7.1 利用MsgBox函数与程序对话 140 7.1.1 使用MsgBox对话框 140 1.简单的信息提示 140 2.显示程序的运行结果 140 7.1.2 提示内容 141 1.提示内容折行显示 141 2.提示内容使用字符加变量 142 7.1.3 对话框按钮 142 1.对话框按钮的配置 142 2.程序响应单击按钮的动作 144 7.1.4 对话框提示图示 145 7.1.https://down.pinggu.org/html/20100426/11814.html
6.msgbox什么意思知识百科MsgBox的用法使用MsgBox函数,需要传入一个或多个参数,具体如下: 提示信息:即要在消息框中显示的文字内容。 按钮类型:指定消息框中显示的按钮类型,包括vbOKOnly、vbOKCancel、vbAbortRetryIgnore、vbYesNoCancel、vbYesNo、vbRetryCancel等。 什么是MsgBox? MsgBox是Visual Basic语言中的一个函数,用于在程序运行时弹出http://www.jingchuangfang.com/jingbaike/1611.html
7.VBS函数集合wzhijuMsgBox 常数 与MsgBox 函数一起使用的常数列表。 MsgBox 函数 在对话框中显示消息,等待用户单击按钮,并返回表示用户所击按钮的数值。 乘法运算符 (*) 两数相乘。 取反运算符 (-) 表示数值表达式的相反数。 Not 运算符 执行表达式的逻辑“非”运算。 https://www.iteye.com/blog/wzhiju-1118112
8.vbscript起步——与窗体的交互,函数的调用ASP教程,ASP应用函数调用包含在单引号中,msgbox 函数的字符串包含在双引号中。只要用冒号 (:) 分隔语句,就可以使 用多条语句。 <!– msgbox “欢迎光临” –> 这种方法在 标记指定了事件和控件,所以不需要再用 sub 和 end sub 语句 进一步实现简单验证 简单验证 <!– sub button1_onclick dim theform set theformhttps://www.west.cn/www/info/25450-1.htm
9.vba中msgbox函数51CTO博客已为您找到关于vba中msgbox函数的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及vba中msgbox函数问答内容。更多vba中msgbox函数相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/vbazhongmsgboxhanshu.html
10.为什么在WINCC中找不到messagebox函数,messagebox是标准函数还是你可以直接写在你的脚本中,不支持的函数,脚本编译会报错提示的。wincc的vbs中是msgbox函数。c脚本中是阿鸣大师所说的。 zhangli0 元老 被采纳率 25.11% 2020-09-20 18:01 本回答已有3人推荐 C脚本的吗?数据C的标准函数参考帖子:WINCC常见问题和一点技巧和脚本http://www.ad.siemens.com.cn/club/bbs/posthttps://www.ad.siemens.com.cn/service/answer/solved_240315_1032.html