zl程序教程

您现在的位置是:首页 >  其他

当前栏目

最完整的VBA字符串知识介绍(续:消息框和输入框)

2023-04-18 15:54:52 时间

上文参见:最完整的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