当前位置:网站首页>Excel-VBA 快速上手(十、提示框、可输入的弹出框)
Excel-VBA 快速上手(十、提示框、可输入的弹出框)
2022-07-26 18:59:00 【三叔笔记】
一、对话框
1.1. 弹出对话框
对话框是最常见的功能,先看一下相对完整的对话框结构:

由图可见,对话框一般由三部分组成( 窗口标题、提示内容、按钮和图标类别和默认选中),VBA 中调用对话框的
语法也是如此,MsgBox 提示内容,按钮和图标类别和按钮默认选中,窗口标题
窗口标题和提示内容很好理解,重点说一下 <按钮和图标类别和按钮默认选中> 这个参数要怎么传,这个参数其
实由三个值组成,实际使用时以 按钮类别 + 图标类别 + 按钮默认选中 这种格式传参,下面列出常用的类别
按钮类别
| 名称 | 值 | 描述 |
|---|---|---|
| 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 | 对话框内默认选中第四个按钮 |
完整的对话框传参示例,<按钮和图标类别和按钮默认选中> 可以传名称,也可以传值
Public Sub main()
'两种方式都可以
MsgBox "提示内容", vbYesNoCancel + vbExclamation + vbDefaultButton2, "窗口标题"
MsgBox "提示内容", 3 + 48 + 256, "窗口标题"
End Sub
1.2. 获取用户对对话框的选择
当我们弹出对话框后,肯定希望获取用户的选择,vba 中,当对话框的按钮被点击后,就会返回按钮的值,我们只
需要判断这个值就可以,vba 中对话框的按钮相对较少,每个按钮都有它固定的值
| 按钮值名称 | 按钮的值 | 描述 |
|---|---|---|
| vbOk | 1 | 确定按钮 |
| vbCancel | 2 | 取消按钮 |
| vbAbort | 3 | 中止按钮 |
| vbRetry | 4 | 重试按钮 |
| vbIgnore | 5 | 忽略按钮 |
| vbYes | 6 | 是按钮 |
| vbNo | 7 | 否按钮 |
示例,使用按钮值名称和使用按钮值都可以进行判断,注意:当想获取对话框的返回值时,不要忘记给 MsgBox 的参数
列表加上 ()
Public Sub main()
Dim value As Integer
value = MsgBox("提示内容", vbYesNoCancel + vbExclamation + vbDefaultButton2, "窗口标题")
'使用按钮值进行判断
If value = 6 Then
Debug.Print "用户选择了'是'"
End If
'使用按钮值名称进行判断
If value = vbYes Then
Debug.Print "用户选择了'是'"
End If
End Sub
二、可输入的对话框
这种对话框,可以让用户输入,vba 中有两种常见的使用方式,InputBox 函数和 Applicatoin.InputBox 方法
2.1. InputBox函数
InputBox函数语法:InputBox(可输入的对话框的提示文字, 窗口标题, 输入框的默认值)
对话框的返回值有下面几种情况:
- 用户输入内容后点击确定按钮,对话框的返回值为用户输入的内容
- 用户没输入内容,但是输入框中有默认值的时候,点击确定按钮,对话框的返回值为输入框中的默认值
- 用户没输入内容,输入框也没有默认值时,点击确定按钮,对话框的返回值为空字符串
- 用户点击取消按钮时,对话框的返回值为空字符串
示例
Public Sub main()
Dim value
value = InputBox("可输入的对话框的提示文字", "窗口标题", "这是输入框的默认值")
Debug.Print value
End Sub
效果

2.2. Application.InputBox 方法
这种方式跟前一种相比,主要多了限定输入框内容类型的功能,这种对话框点击取消按钮后返回 False
语法为:Application.InputBox(对话框的提示文字,窗口标题,输入框默认值,输入框 x 坐标,输入框 y 坐标,帮助文档,文档ID,输入框内容类型)
参数看上去非常多,但其实很好理解,对话框的提示文字、窗口标题、输入框默认值这三个参数看描述就知道怎么
传了,输入框 x 坐标、输入框 y 坐标、帮助文档、文档ID这四个参数一般不用传,所以这里也不介绍了,重点就是最后
一个参数 ( 输入框内容类型 ),这个参数有多种类型可供选择,如下:
| 值 | 描述 |
|---|---|
| 0 | 公式类型 |
| 1 | 数字类型 |
| 2 | 文本类型、既字符串类型 |
| 4 | 布尔值类型 |
| 8 | 单元格引用类型 |
| 16 | 错误值类型 |
这些类型动手试一试就能了解,主要记录一下单元格引用类型
单元格引用类型
当选择一个单元格时,对话框返回的是 Range 对象,多个单元格时对话框返回的是二维数组
示例
代码:
Public Sub main()
Dim value
value = Application.InputBox("对话框显示内容", "输入框标题", "文本框内默认值", , , , , 8)
If VBA.IsArray(value) Then
Debug.Print "二维数组:" & value(1, 1)
Else
Debug.Print "Range对象:" & value
End If
End Sub
效果:

边栏推荐
- CIO guide to business change
- iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比
- 2022/07/26 学习笔记 (day16) 链表和栈
- Redis介绍
- Linux 定时备份数据库并删除 N 天以前的数据
- IM即时通讯开发如何压缩移动网络下APP的流量消耗
- Intensive reading of the paper: yolov2 - yolo9000: better, faster, stronger
- PHP 替换中文字符的方法
- 【PHP】MySQL原生PHP操作-天龙八步
- 论文精读:YOLOV2——YOLO9000:Better, Faster, Stronger
猜你喜欢

PyQt5快速开发与实战 3.6 打包资源文件

花1200亿修一条“地铁”,连接4个万亿城市,广东在想啥?

基于华为云 IOT 设计智能称重系统 (STM32)【二】结尾有资料
![Design of intelligent weighing system based on Huawei cloud IOT (STM32) [II] there is information at the end](/img/55/ca86fd1a53eb61efc70fead08ff0ad.png)
Design of intelligent weighing system based on Huawei cloud IOT (STM32) [II] there is information at the end

ipad下载的文件在哪里可以找到

Where can I find the files downloaded from iPad

DOM案例:10秒倒计时-写跳转页面相关的知识

企业数字化转型成大趋势,选对在线协作工具很重要

Ijcai2022 meeting! Brescia et al. Tutorial of evidential reasoning and learning, describing its latest progress, with 96 slides attached

拿铁DHT-PHEV产品响当当,销量会不会让李瑞峰想通了呢?
随机推荐
Docker使用mysql:5.6和 owncloud 镜像,构建一个个人网盘,安装搭建私有仓库 Harbor
Latte dht-phev products are very popular. Will the sales volume make Li Ruifeng figure it out?
Decompile jar files (idea environment)
ShardingSphere-JDBC 关键字问题
【二叉树】将二叉搜索树变平衡
What is federated graph machine learning? A summary of the latest "federal map machine learning: concepts, techniques, and Applications" at the University of Virginia
金仓数据库 KingbaseES SQL 语言参考手册 (18. SQL语句: DROP MATERIALIZED VIEW 到 DROP SYNONYM)
Leetcode daily practice - 27. Remove elements
线性代数第4章线性方程组
Household deposits increased by 10.33 trillion yuan in the first half of the year, with an average of 57.1 billion deposits pouring into banks every day
openstack 虚拟机网卡被重名为cirename0
[shell] Reprint: batch replacement find awk sed xargs
LeetCode每日一练 —— 189. 轮转数组
亲力亲为的思考
Linear algebra Chapter 3 vector
canvas概述
LeetCode每日一练 —— 27. 移除元素
数据库设计三大范式
Leetcode daily practice - 189. Rotation array
MySQL subquery usage