最完整的VBA字符串知识介绍(续:消息框和输入框)
上文参见:最完整的VBA字符串知识介绍>>>
消息框
消息框是一个特殊的对话框,用于向用户显示一条信息。用户无法在消息框中键入任何内容。通常会创建两种消息框:一种只是显示信息,另一种是希望用户做出决定。
使用MsgBox函数创建消息框。其语法是:
Function MsgBox(Prompt[, Buttons][, Title][, Helpfile, Context]) As String
MsgBox函数接受五个参数,只有第一个参数是必需的。
消息框中的消息
Prompt参数是用户将看到在消息框上显示的字符串。作为一个字符串,可以用双引号将其显示,如“你的凭据已检查”。下面是一个例子:
Sub Exercise17()
MsgBox ("你的凭据已检查.")
End Sub
结果如下图6所示。
图6
还可以从其他字符串片段创建消息。Prompt参数最多可以由1024个字符组成。要以多行显示提示,可以在任意两个字符串之间使用常量vbCrLf或组合Chr(10)& Chr(13)。下面是一个例子:
Sub Exercise18()
MsgBox ("你的登录凭据已检查." & _
vbCrLf & "要完成应用程序," & _
"请填写下面的调查表")
End Sub
结果如下图7所示。
图7
如果仅使用第一个参数调用MsgBox函数,则该函数称为方法(方法是类的成员函数;本例中的类是正在处理的应用程序)。如果要使用其他参数,则必须将MsgBox视为函数。也就是说,必须将其赋值给变量或对象。
消息框的按钮
Buttons参数指定应在消息框上显示的按钮。有不同种类的按钮可用,每个按钮使用一个常量整数,如下所示:
图8
调用MsgBox函数并指定按钮时,可以使用上述常量数值之一。下面示例在消息框上显示“是”和“否”按钮:
Sub Exercise19()
ActiveCell = MsgBox("你的登录凭据已检查" & _
"你的应用程序已被授权:" & _
"祝贺!" &vbCrLf & _
"离开前, 你愿意接受我们的问卷调查吗?",vbYesNo)
End Sub
结果如下图9所示。
图9
消息框上的图标
除了按钮之外,为了增强消息框的功能,还可以在消息框的左侧显示一个图标。要显示图标,可以使用或添加MsgBoxStyle枚举的成员。要显示图标的成员包括(表中依次为图标常量、数字值和说明):
图10
要使用其中一个图标,必须将按钮的值与图标的所需值组合。要执行此组合,使用OR运算符。下面是一个例子:
Sub Exercise20()
Dim iAnswer As Integer
iAnswer = MsgBox("你的登录凭据已检查" & _
"你的应用程序已被授权:" & _
"祝贺!" &vbCrLf & _
"离开前, 你愿意接受我们的问卷调查吗?",_
vbYesNo Or vbQuestion)
End Sub
结果如下图11所示。
图11
调用MsgBox函数时,如果要显示一个或多个按钮并显示图标,可以使用OR运算符使用MsgBoxStyle枚举的两个成员,也可以将按钮的一个常量值加到图标的另一个常量值中。例如,3+48=51将显示按钮“是”、“否”和“取消”以及感叹号图标。
消息框的默认按钮
如果创建一个包含多个按钮的消息框,最左边的按钮通常有一个粗边框,表示它是默认的。如果用户在查看该按钮后按Enter键,效果将与单击默认按钮相同。如果需要,可以指定另一个按钮作为默认按钮。为此,可以使用或添加MsgBoxStyle枚举的另一个成员。用于指定默认按钮的成员包括:
图12
同样,要指定默认值,使用OR运算符将默认按钮常量与任何其他组合组合在一起。下面是一个例子:
Sub Exercise21()
ActiveCell = MsgBox("你的登录凭据已检查" & _
"你的应用程序已被授权:" & _
"祝贺!" &vbCrLf & _
"离开前, 你愿意接受我们的问卷调查吗?",_
vbYesNo Or vbQuestion OrvbDefaultButton2)
End Sub
结果如下图13所示。
图13
这些附加按钮可用于进一步控制用户可以执行的操作:
图14
消息框的标题
Title参数是显示在消息框标题栏上的标题。它是一个字符串,其单词或句子可以用括号括起来,也可以从创建的字符串中获取。Title参数是可选的。如果省略,消息框将在标题栏上显示应用程序的名称。否则,如果需要自定义标题,可以将其作为MsgBox函数的第三个参数提供。标题可以是简单的字符串。下面是一个例子:
Sub Exercise22()
ActiveCell = MsgBox("你的登录凭据已检查" & _
"你的应用程序已被授权:" & _
"祝贺!" & vbCrLf& _
"离开前, 你愿意接受我们的问卷调查吗?",_
vbYesNo Or vbQuestion, _
"朋友圈 - 会员申请")
End Sub
结果如下图15所示。
图15
注意,标题现在是自定义的,而不是应用程序的名称。标题也可以是从表达式创建的字符串,也可以是从变量或值发出的字符串。
消息框的返回值
MsgBox函数能用于返回一个值,此值对应于用户在消息框上单击的按钮。根据消息框显示的按钮,用户单击后,MsgBox函数可以返回值。该值可以是MsgBoxResult枚举的成员,也可以是VisualBasic语言识别的常量数值。返回的值可以是以下值之一:
图16
输入框
Visual Basic语言提供了一个函数,允许向用户请求信息,用户可以在对话框的文本字段中键入信息。用于完成此操作的函数称为InputBox,其基本语法为:
InputBox(prompt[,title][, default][, xpos][, ypos][, helpfile, context])
传递消息
可以提供给InputBox函数的最基本信息称为提示。它应该是一个字符串,用户将读取并知道所期望的内容。下面是一个例子:
Sub Exercise23()
InputBox ("输入你的出生日期,形式yyyy-mm-dd")
End Sub
结果如下图17所示。
图17
在阅读输入框上的消息时,要求用户输入一条信息。用户应该提供的信息类型取决于程序员。因此,有两件事应该一直做。首先,应该让用户知道所请求的信息类型,它是一个数字(什么类型的数字)?它是字符串(例如国家名称或客户名称)?它是文件的位置(例如C:ProgramFilesexcelperfect)?是否希望回答是/否真/假类型(如果是,用户应如何提供)?是日期吗(如果是日期,用户应该输入什么格式)?这些问题意味着应该向用户表达一个明确的请求,并指定期望的值。一个足够明确的解决方案包括向用户提供一个示例。
输入框的标题
InputBox函数的第二个参数允许选择性地指定输入框的标题,这是将出现在标题栏上的字符串。由于这是一个可选参数,如果不传递它,输入框将显示应用程序的名称。否则,要显示自己的标题栏,传递title参数。
标题作为字符串传递。下面是一个例子:
Sub Exercise24()
ActiveCell = InputBox("请输入你的出生日期,形式yyyy-mm-dd",_
"学生注册")
End Sub
结果如下图18所示。
图18
注意,标题现在是自定义的,而不是应用程序的名称。标题也可以是从表达式创建的字符串,也可以是从变量或值发出的字符串。
输入框的默认值
有时,即使提供了明确的请求,用户也可能不会提供新值,而是单击“确定”。问题是仍然需要获取文本框的值,并且可能希望将其包含在表达式中。可以通过使用默认值填充文本框来解决此问题,并向用户提供示例。为此,InputBox函数提供了第三个参数。
要向用户提供示例或默认值,将第三个参数传递给InputBox函数。如果要使用此参数提供用户可以遵循的示例,提供正确的格式。下面是一个例子:
Sub Exercise25()
ActiveCell = InputBox("输入学生姓名: ", _
"学生注册","Fan")
End Sub
结果如下图19所示。
图19
注意,当输入框显示默认值时,该值位于文本框中,并且该值已被选中。因此,如果该值没有问题,用户可以接受它并单击“确定”。使用默认值的另一种方法是提供用户可以接受的值;也就是说,用户输入的最常见或最可能的值。下面是一个例子:
Sub Exercise26()
ActiveCell = InputBox("输入出生地: ", _
"学生注册","武汉")
End Sub
结果如下图20所示。
图20
再次提醒注意,用户可以接受该值并单击“确定”或按Enter键。
输入框的位置
默认情况下,当输入框出现时,它会显示在屏幕的中间。如果需要,可以指定输入框出现时的位置。为此,InputBox函数配备了第四个和第五个参数。第四个参数指定输入框的x坐标;也就是说,从其左边框到显示器左边框的距离。第五个参数指定从输入框上边框到显示器上边框的距离。
输入框的返回值
当输入框显示时,输入值后,用户将单击其中一个按钮:确定或取消。如果用户单击“确定”,则应获取用户已键入的值,还应负责查明用户是否键入了有效值。由于InputBox函数可以返回任何类型的值,因此它没有验证用户输入的机制。要在用户单击“确定”时获取输入框对话框的值,可以获取InputBox函数的返回值。
使用后,InputBox函数返回一个字符串。下面是一个示例:
Sub Exercise27()
Dim StudentName As String
StudentName = InputBox("输入学生姓名: ", _
"学生注册")
MsgBox ("学生姓名: " &StudentName)
End Sub
还可以从输入框中获取任何类型的值。也就是说,当InputBox函数退出时,由于VisualBasic语言的灵活性,编译器可以直接转换返回值。下面是一个例子:
Sub Exercise28()
Dim DateOfBirth As Date
DateOfBirth = InputBox("请输入你的出生日期, 形式yyyy-mm-dd",_
"学生注册")
MsgBox ("出生日期: " &DateOfBirth)
End Sub
相关文章
- Linux 5.12-rc5 发布:改进比想象中多 可能生成rc8版
- Hadoop成功部署案例之eBay篇
- Windows 10 21H1文件资源管理器新版触摸UI与图标抢先看
- 让你的Hadoop运行的更快
- 开源破解大数据困局 Hadoop非唯一选择
- CentOS时代终结,我们有更好的Debian 10择
- 大数据进行时:聚光灯后的四大推手
- 大数据最具潜力的三大应用领域
- Linux磁盘挂载和docker安装
- 练习使用 Linux 的 grep 命令
- VMworld 2012:Hadoop离虚拟化还有多远?
- 鸿蒙软总线跨设备访问该怎么玩—小总结
- Chrome 浏览器测试版新增阅读清单功能,教你如何开启
- 一文学会利用Kubeadm安装Kubernetes1.20
- 这波设计能赶上苹果吗?Windows 10全新图标速览
- Windows 95尘封多年的彩蛋被曝光
- 开源八预言:桌面linux必亡、Hadoop要火
- 一文搞定 Perf 和 Gpertools
- 多人协作如何管理Git分支
- 图解数据挖掘K-means算法