Excel VBA 讲座05 - InputBox和MsgBox使用

news2024/9/23 5:25:42

 

本篇介绍的内容:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

np.loadtxt()读取数据

前言 机器学习中使用np.loadtxt()可以高效的导入数据,np.loadtxt()适合.txt文件和.csv文件。但是它默认读取float类型的值。 1.np.loadtxt()读取txt文件 1-1 基础参数 numpy.loadtxt(fname, dtype, comments#, delimiterNone, convertersNone, skiprows0, usecol…

uniapp获取支付宝user_id - 支付宝提现 - 登录授权 - APP支付宝登陆 - H5支付宝授权

效果图 uniapp须知(无奈之处) uniapp绑定支付宝user_id提现 - 方法对比: ==== 不同接口 ==== 【APP支付宝登录】 https://opendocs.alipay.com/open/218/105325 【网站支付宝登录】

PMP证书有什么用?

有没有用看你的考证目的,总的来说就是敲门砖的作用,项目招聘、应聘项目经理都需要pmp 证书。⭕但是事在人为,祈祷考完 PMP 就能升职加薪走上人生巅峰的想法,一纸证书是做不到的。PS:身边有考了 PMP 之后跳槽薪资涨幅 3…

阳康后身体还是不舒服怎么办?

很多年轻朋友阳康后恢复的还可以,逐渐回到以前的身体状态,但是家里老人体质偏弱,恢复情况就没那么乐观了。有些还一直伴随着没有嗅觉、疲惫、咳嗽等后遗症。要让老人快速恢复健康,生病后一定要注意这几点:每天保证7-8小…

测试开发中的虫剂悖论

测试开发中的虫剂悖论 1 初识虫剂悖论 提到 虫剂悖论(pesticide paradox),我相信很多人都没听说的,除非是生物学专业的同学或者老师。 虫剂悖论描述的是重复使用某种农药杀灭害虫,时间越久,杀虫的效果就越差。 之所以这样&#xf…

压阻式(压)力传感器-个人笔记

这是个人笔记 最终要求,单个的压阻式压力传感器、阵列之后的压力传感器、三维力传感器 关键词:力传感器,压力传感器,多轴力传感器,应变式传感器,应变式力传感器,电阻应变式传感器,f…

除 svn、Testlink 外,还有哪些不错的测试用例管理工具?

类似TestLink的 9 大测试用例管理平台:1、PingCode;2、TestRail;3、Xray;4、Jira;5、PractiTest;6、PractiTest;7. Zephyr Enterprise;8、MeterSphere;9、Bugzilla。一、…

【Flink】浅谈Flink架构和调度

【Flink】浅谈Flink架构和调度 Flink架构 Flink 是一个分布式系统,需要有效分配和管理计算资源才能执行流应用程序。它集成了所有常见的集群资源管理器,例如【Hadoop YARN】、【Apache Mesos】和【Kubernetes】,但也可以设置作为独立集群甚…

Ethercat系列(2)PDO动态映射设置过程

过程数据对象PDOPDO一般用于实时数据更新;其分为接收PDO(RxPDO)和发送PDO(TxPDO),前者的数据流方向是主站到从站,TxPDO是从站到主站。PDO功能支持同步周期的刷新方式,也支持非周期性…

解决nacos2.1版本连接mysql8.x版本异常的问题

在测试环境部署nacos集群的时候使用的是mysql5.7版本,部署没有什么异常。但是在生产环境中我们使用的是mysql8.x版本,在启动nacos的时候各种报错。在网上看了很多解决办法花了挺长时间去排错也没有处理好问题网上最常见的两种方式修改pom文件&#xff1a…

代码随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

动态规划 一、309.最佳买卖股票时机含冷冻期 题目: 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票&#x…

前端经典面试500题【上】

一阶段面试题集锦 1、 rem em vw vw 百分比区别 相同点: rem,em,vw,vh,vw属于前端开发除了px单位之外的另外几种单位取值;但是具体含义存在区别 不同点: px:是像素单位&#xff0c…

Databend 开源周报 第 78 期

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。 即刻体验云服务:https://app.databend.com 。 What’s New 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 Features & Improvements SQL 消除多余的 group by 标量 …

Docker查看正在运行的容器目录

起因 为了方便操作服务器,大部分都是使用宝塔面板操作的,在宝塔中我发现面板中用来管理Docker的工具使用起来非常方便,如下图: 可以看到宝塔的面板可以直接查看和从操作容器、Compose 、Compose 模板、镜像、网络、存储卷、仓库等…

2022年度总结:拒绝无效努力,实现破圈成长。

在从毕业一直到现在,我都会写一篇关于自己的从技术、商业、人情世故以及未来展望的博文,以至于归纳每个时期的自己, 走在互联网开发的边缘,不得不抽出时间鞭策自己学习新知识,未知的知识是 充满好奇的, 就好…

Centos 7 内核升级

参考 https://www.cnblogs.com/zengkefu/p/5667145.html 一、ELRepo 关于内核种类: kernel-ml 中的ml是英文【 mainline stable 】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。 kernel-lt 中的lt是英文【 long term support 】的缩写,elre…

分布式理论之体系结构

写在前面 分布式的体系结构目前有两种,第一种是集中式架构,也就是我们最常见到的master-slave架构,第二种是非集中式架构,也就是我们经常听到的去中心化架构,本文我们就一起来看下吧! 1:集中式…

Android开发技术——车机技术之WMS学习

/ 窗口管理 / 窗口管理核心类介绍 窗口管理使用到的 DisplayContent,WindowToken 和 WindowState。 DisplayContent 用来管理一个逻辑屏上的所有窗口,有几个屏幕就会有几个 DisplayContent。使用 displayId 来区分。 处于不同 DisplayContent 的两个…

免费好用的IPv6之远程管理路由器-OpenWrt上uhttpd的TLS(HTTPS)部署流程介绍

在免费好用的IPv6之远程管理路由器-OpenWrt上uhttpd的使用介绍_123-wqy的博客-CSDN博客_openwrt uhttpd这篇文章的最后,我们已经可以使用80、443端口从路由器内外网的IPv6地址对路由器的WEB界面进行访问。但是,考虑外网访问场景下的安全性问题&#xff0…

初级软件测试面试会问什么 这些问题你都知道吗?

在现如今这竞争十分激烈的软件测试职场中,求职者们想获得一份让自己满意且高薪的工作是十分不易的,因此,只有事先做好充分准备才能让自己通关筹码加倍。在这里,我给各位即将踏入面试征程的初级软件测试小伙伴们准备了一些关于初级…