Excel VBA 讲座05 - InputBox和MsgBox使用

 

本篇介绍的内容:

1,当用户使用宏或procedure时,使用InputBox来接收或收集用户输入的信息。

2,根据需求使用IF语句构建逻辑。

3,使用Message Box将信息展示给用户,比如用户输出错误,就提示用户。

Prompting the User for Input Using an InputBox / 使用InputBox获取用户输入信息

VBA语言中,有个内置的对象,叫做InputBox,用来提示用户输入信息。

InputBox函数语法如下:

InputBox(prompt, title, default, xpos, ypos, helpfile, context) as string

• Prompt: The message to the user that appears on the Input Box (ex. Please enter a value)

• Title: The text that shows up at the top of the Input Box (ex. Sort Box)

• Default: Any default value that you want the Input Box to contain (ex. Enter a Value here)

• Xpos/Ypos: The position of the InputBox on the screen

• HelpFile: Any associated help file for the user

1, 调用此函数,返回的是一个字符串

2,第一个参数prompt, 是字符串表达式,是在对话框中显示的的文本信息,是必需项。最长约为1024个字符, 可以加入换行符显示多行。

3,第二个参数title是可选的,是对话框标题栏中显示的字符串表达式。 如果省略title,则标题栏中将显示应用程序名称。

4,第三个参数default是可选的,是文本输入框中显示的字符串表达式,在未提供其他输入时作为默认响应。 如果省略了 default,文本框将显示为空。

5,第四个参数xpos是可选的,指定对话框的左边缘与屏幕的左边缘的水平距离(以缇为单位)的数值表达式。 如果省略了xpos,对话框将水平居中。

6,第五个参数ypos是可选的,指定对话框的上边缘与屏幕的顶部的垂直距离(以缇为单位)的数值表达式。 如果省略了 ypos,对话框将位于屏幕垂直方向往下大约三分之一的位置。

6,第六个参数helpfile是可选的,用于标识帮助文件的字符串表达式,前者用于为对话框提供上下文相关的帮助。 如果提供 helpfile,则也必须提供 context。

7,第七个参数context是可选的,帮助上下文数值的数值表达式,该数值由帮助作者为相应的帮助主题分配。 如果提供 context,则也必须提供 helpfile。

注:同时提供有 helpfile 和 context 时,用户可以按 F1 (Windows) 或 HELP (Macintosh) 以查看与 context 对应的帮助主题。比如:

' Use Helpfile and context. The Help button is added automatically.

MyValue = InputBox(Message, Title, , , , "DEMO.HLP", 10)

文本框输入框仅接受 255 个字符。 将返回字符串截断为 254 个字符。

文本框不接受换行符,如 Shift+Enter。 如果用户在文本框中粘贴带换行符的文本,则文本在换行符时将被截断。

第一个参数是必须的,后面的参数是可选的,则使用默认值。举例如下:

userInput = InputBox("What is your age?", "Question", "20")

userInput = InputBox("What is your age?", , "20")

上面两条语句都可运行,一个询问年龄的问题,默认值是20。

区别在于第一条语句在对话框中显示标题,第二个没有给出标题参数,为空,使用默认值。

这里给出的参数是按照函数声明中的参数顺序给出的。

Building Logic in Your Macros Using an IF Statement / 使用IF语句在宏里构建逻辑

在我们创建的VBA宏里,大部分的功能都是逻辑处理的代码。而逻辑处理代码的最主要形式就是IF语句。

语法:(condition举例,比如:input = "start")

If condition Then

ElseIf condition Then

Else

End If

Using a MsgBox to Message the User

和InputBox要求用户输入信息相反,Message Box这个对象,是用来向用户显示各种信息的。

MsgBox在对话框中显示消息,等待用户单击按钮,并返回一个 整数,指示用户单击的哪个按钮。

可以通过参数设置不同的按钮,用户点击不同按钮,生成不同的返回值。

此函数语法如下:

MsgBox(prompt, buttons, title, helpfile, context) As Integer

• Prompt: The message to the user

• Buttons: a value representing the type of buttons on the message box (ex. vbYesNo)

• Title: Text that appears at the top of the message box

• HelpFile: Any associated help file for the user

• Context: Numeric value to associated help file

1, 调用此函数,返回的是一个整数值

2,第一个参数prompt是必需项,是字符串表达式。表示显示的消息,是必需项。 最长约为1024个字符(和字符宽度有关)。多行显示可以使用回车符 (Chr(13))、换行符 (Chr(10)) 或回车换行符组合 (Chr(13) & Chr(10)) 将其分隔。比如:"Hello"+Char(10)+"World" 或 "Hello"& Char(10) & "World"

3,第二个参数buttons是可选的,数值表达式,用于指定要显示按钮的数量和类型、要使用的图标样式、默认按钮的标识和消息框的形式的值的组合。 如果省略,则 buttons 的默认值为 0。

4,第三个参数title是可选的。对话框标题栏中显示的字符串表达式。 如果省略 title,则标题栏中将显示应用程序名称。

5,第六个参数helpfile是可选的,用于标识帮助文件的字符串表达式,前者用于为对话框提供上下文相关的帮助。 如果提供 helpfile,则也必须提供 context。

6,第七个参数context是可选的,帮助上下文数值的数值表达式,该数值由帮助作者为相应的帮助主题分配。 如果提供 context,则也必须提供 helpfile。

buttons 参数设置如下:

常量

说明

vbOKOnly

0

仅显示“确定”按钮。

vbOKCancel

1

显示“确定”和“取消”按钮。

vbAbortRetryIgnore

2

显示“中止”、“重试”和“忽略”按钮。

vbYesNoCancel

3

显示“是”、“否”和“取消”按钮。

vbYesNo

4

显示“是”和“否”按钮。

vbRetryCancel

5

显示“重试”和“取消”按钮。

vbCritical

16

显示“关键消息”图标。

vbQuestion

32

显示“警告查询”图标。

vbExclamation

48

显示“警告消息”图标。

vbInformation

64

显示“信息消息”图标。

vbDefaultButton1

0

第一个按钮是默认按钮。

vbDefaultButton2

256

第二个按钮是默认按钮。

vbDefaultButton3

512

第三个按钮是默认按钮。

vbDefaultButton4

768

第四个按钮是默认按钮。

vbApplicationModal

0

应用程序模式;用户在继续在当前应用程序中工作前必须响应消息框。

vbSystemModal

4096

系统模式;在用户响应消息框前,所有应用程序都挂起。

vbMsgBoxHelpButton

16384

在消息框中添加“帮助”按钮。

vbMsgBoxSetForeground

65536

将消息框窗口指定为前景窗口。

vbMsgBoxRight

524288

文本右对齐。

vbMsgBoxRtlReading

1048576

指定文本在希伯来语和阿拉伯语系统中应从右到左显示。

第一组值 (0-5) 表示对话框中显示的按钮的数量和类型;第二组值(16、32、48、64)表示图标样式;第三组值(0、256、512)用于确定默认按钮;第四组值(0、4096)用于确定消息框的形式。 合并数字以创建最终 buttons 参数值时,只是用每个组中的其中一个数值。

这些常量由 Visual Basic for Applications 指定。 因此,名称可代替实际值在代码中的任意位置使用。

返回值:

常量

说明

vbOK

1

确定

vbCancel

2

Cancel

vbAbort

3

中止

vbRetry

4

重试

vbIgnore

5

忽略

vbYes

6

vbNo

7

同时提供有 helpfile 和 context 时,用户可以按 F1 (Windows) 或 HELP (Macintosh) 以查看与 context 对应的帮助主题。 某些 主机应用程序(例如,Microsoft Excel)还会在对话框中自动添加“帮助”按钮。比如假定 DEMO.HLP 为帮助文件,该文件包含帮助上下文数值等于 1000 的主题,示例如下:

Dim Msg, Style, Title, Help, Ctxt, Response, MyString

Msg = "Do you want to continue ?"    ' Define message.

Style = vbYesNo Or vbCritical Or vbDefaultButton2    ' Define buttons.

Title = "MsgBox Demonstration"    ' Define title.

Help = "DEMO.HLP"    ' Define Help file.

Ctxt = 1000    ' Define topic context.

        ' Display message.

Response = MsgBox(Msg, Style, Title, Help, Ctxt)

If Response = vbYes Then    ' User chose Yes.

    MyString = "Yes"    ' Perform some action.

Else    ' User chose No.

    MyString = "No"    ' Perform some action.

End If

注意上面设置buttons参数时,使用逻辑或运算符,也可以使用加运算,结果是一样的。

如果对话框中显示“取消”按钮,按 ESC 键与单击“取消”具有相同的作用。 如果对话框中包含“帮助”按钮,则会为对话框提供上下文相关帮助。 但是,在单击其他按钮中的某个按钮之前不会返回任何值。

要省略某些位置参数,必须包含相应的逗号分隔符。

示例说明

下面的表表格,通过用户输入选择,来选择要根据哪一列进行排序:

Public Sub SortList()

  Dim userInput As String

  Dim tryAgain As Integer

  userInput = InputBox("1=Sort by Division, 2=Sort by Category, 3=Sort by Total Sales")

  if userInput = "1" Then

    DivisonSort

  elseif userInput = "2" then

    CategorySort

  elseif userinput = "3" Then

    TotalSort

  Else

    tryAgain = msgbox("Incorrect Value. Try Again?", vbYesNo)

    if tryAgain = 6 then ' User press yes

      SortList

    end if

  End If

End Sub

Sub DivisionSort()

    Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _

        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

        DataOption1:=xlSortNormal

End Sub

Sub CategorySort()

    Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _

        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

        DataOption1:=xlSortNormal

End Sub

Sub TotalSort()

    Selection.Sort Key1:=Range("F4"), Order1:=xlAscending, Header:=xlGuess, _

        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

        DataOption1:=xlSortNormal

End Sub

用户选择根据哪一列排序,如果输入错误,则提示用户,并可以选择重新操作。

下面的三个宏使用来执行排序操作的,可以通过录制宏的方法,获得相应的操作代码,并加以改进。遇到不懂的地方,就按F1。

参考:

InputBox 函数 (Visual Basic for Applications) | Microsoft Learn

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值