Excel常用技能分享与探讨(5-宏与VBA简介 VBA常用到的函数二)
zhezhongyun 2025-07-10 22:04 2 浏览
前面各章的实例中或多或少都有用到一些函数,接下来将做一个汇总,对 VBA 中常见函数的分类介绍,涵盖字符串处理、调试、类型转换、数学运算等多个领域,并附有示例说明:
二、调试与输出函数
2.1. Debug.Print
- 作用
在 VBA 的 立即窗口(按 Ctrl+G 打开)中输出内容,用于调试时快速查看变量值或程序状态。
- 语法
Debug.Print [outputlist]
参数
- outputlist(可选):
要输出的内容,可以是变量、表达式或字符串。
支持用逗号 , 分隔多个参数,按固定格式对齐;或用分号 ; 分隔,紧凑输出。
若省略参数,输出空行。
示例
Dim x As Integer
x = 10
Debug.Print "x 的值是:"; x ' 输出 "x 的值是: 10"
Debug.Print "A", "B", "C" ' 输出对齐的三列:A B C
Debug.Print ' 输出空行
2.2. MsgBox
- 作用
弹出对话框显示消息,并可返回用户点击的按钮结果(如“确定”、“取消”等)。
- 语法
MsgBox(prompt, [buttons], [title], [helpfile], [context])
参数
参数名 | 必填 | 说明 | 示例值 |
prompt | 是 | 对话框中显示的消息内容(支持换行符 vbCrLf) | "操作已完成!" |
buttons | 否 | 指定按钮类型、图标样式和默认按钮的组合值(见下方 常用按钮常量) | vbYesNo + vbQuestion |
title | 否 | 对话框标题栏文本,默认显示宿主程序名(如 "Microsoft Excel") | "系统提示" |
helpfile | 否 | 关联的帮助文件路径(极少使用) | "C:\help.chm" |
context | 否 | 帮助文件的上下文 ID(需与 helpfile 配合使用) | 1001 |
常用按钮常量
常量 | 值 | 说明 |
vbOKOnly | 0 | 仅显示“确定”按钮(默认) |
vbOKCancel | 1 | 显示“确定”和“取消”按钮 |
vbYesNo | 4 | 显示“是”和“否”按钮 |
vbYesNoCancel | 3 | 显示“是”、“否”、“取消” |
vbCritical | 16 | 显示错误图标(红色×) |
vbQuestion | 32 | 显示问号图标(蓝色?) |
vbExclamation | 48 | 显示警告图标(黄色!) |
vbInformation | 64 | 显示信息图标(蓝色i) |
vbDefaultButton1 | 0 | 第一个按钮为默认按钮 |
vbDefaultButton2 | 256 | 第二个按钮为默认按钮 |
返回值
返回值常量 | 值 | 用户点击的按钮 |
vbOK | 1 | 确定 |
vbCancel | 2 | 取消 |
vbYes | 6 | 是 |
vbNo | 7 | 否 |
示例
Dim response As Integer
response = MsgBox("是否继续?", vbYesNo + vbQuestion, "确认操作")
If response = vbYes Then
Debug.Print "用户选择了“是”"
End If
2.3. InputBox
- 作用
弹出对话框获取用户输入的文本或数值。
- 语法
InputBox(prompt, [title], [default], [xpos], [ypos], [helpfile], [context], [type])
参数
参数名 | 必填 | 说明 | 示例值 |
prompt | 是 | 对话框中显示的提示文本 | "请输入姓名:" |
title | 否 | 对话框标题栏文本,默认显示宿主程序名 | "用户输入" |
default | 否 | 输入框中的默认值 | "张三" |
xpos | 否 | 对话框左上角的水平屏幕位置(单位:缇,1厘米≈567缇) | 1000 |
ypos | 否 | 对话框左上角的垂直屏幕位置 | 500 |
helpfile | 否 | 关联的帮助文件路径(极少使用) | "C:\help.chm" |
context | 否 | 帮助文件的上下文 ID | 2001 |
type | 否 | 指定输入数据类型(见下方 Type 参数选项),默认 2(文本) | 1 |
Type 参数选项
值 | 说明 |
0 | 公式(如 =SUM(A1:A3)) |
1 | 数值 |
2 | 文本(默认) |
4 | 逻辑值(True/False) |
8 | 单元格引用(如 A1:B2) |
16 | 错误值(如 #N/A) |
返回值
- 用户输入的内容(若点击取消,返回空字符串)。
示例
Dim userName As String
userName = InputBox("请输入您的姓名:", "用户注册", "默认姓名")
If userName <> "" Then
Debug.Print "用户姓名:" & userName
Else
Debug.Print "用户取消了输入"
End If
2.4 Stop 语句
- 作用:暂停代码执行并进入调试模式(类似断点)。
- 语法:Stop
- 示例:
If x < 0 Then
Stop ' 当 x 为负数时暂停
End If
2.5 Assert 方法
- 作用:在条件为 False 时中断代码,仅用于调试(需在 调试 → 添加监视 中启用)。
- 语法:Debug.Assert condition
- 示例:
Debug.Assert x > 0 ' 若 x<=0 则中断
2.6 On Error GoTo/On Error Resume Next
- 在 VBA 中使用 On Error GoTo 处理错误时,错误的具体返回值由 Err.Number 属性提供,不同的错误对应不同的错误代码。以下是常见错误代码及其含义的详细说明:
- 以下是 VBA 运行时常见的错误代码及其含义:
错误代码 | 常量名 | 说明 |
6 | vbErrorOverflow | 溢出错误(例如:数值超出变量类型的范围)。 |
7 | vbErrorOutOfMemory | 内存不足(无法分配所需内存)。 |
9 | vbErrorSubscript | 下标越界(访问数组或集合中不存在的索引)。 |
11 | vbErrorDivision | 除数为零(例如:5 / 0)。 |
13 | vbErrorTypeMismatch | 类型不匹配(例如:将字符串赋给整型变量)。 |
53 | vbErrorFileNotFound | 文件未找到(例如:打开不存在的文件)。 |
61 | vbErrorDiskFull | 磁盘已满(写入文件时磁盘空间不足)。 |
68 | vbErrorDeviceUnavailable | 设备不可用(例如:访问未连接的打印机)。 |
91 | vbErrorObjectNotSet | 对象未初始化(访问未赋值的对象变量)。 |
1004 | vbErrorApplication | Excel 特定错误(例如:操作无效的单元格区域)。 |
- 除了内置错误,可以通过 Err.Raise 手动触发自定义错误,代码范围通常为 vbObjectError + 自定义值(例如 vbObjectError + 1000)。
示例:
Sub Demo()
On Error GoTo ErrorHandler
' 手动触发自定义错误
Err.Raise Number:=vbObjectError + 1000, Description:="自定义错误!"
Exit Sub
ErrorHandler:
If Err.Number = vbObjectError + 1000 Then
MsgBox "发生自定义错误:" & Err.Description
Else
MsgBox "其他错误:" & Err.Description
End If
End Sub
- 关键操作
获取错误描述:
Debug.Print Err.Description
手动清除错误:
Err.Clear
重新触发错误:
Err.Raise Err.Number
以上函数和语句覆盖了 VBA 中调试与用户交互的核心功能:
- Debug.Print:轻量级调试输出。
- MsgBox:弹窗提示或获取简单用户反馈。
- InputBox:获取用户输入文本或数值。
- Stop/Assert:主动中断代码以排查问题。
实际开发中,结合 Err 对象的错误处理(如 On Error GoTo)和断点调试(F8 逐语句执行),可以高效定位和修复代码问题。
相关推荐
- 怎样设置EditText内部文字被锁定不可删除和修改
-
在做项目的时候,我曾经遇到过这样的要求,就是跟百度贴吧客户端上的一样,在回复帖子的时候,在EditText中显示回复人的名字,而且这个名字不可以修改和删除,说白了就是不可操作,只能在后面输入内容。在E...
- iOS的布局体系-流式布局MyFlowLayout
-
iOS布局体系的概览在我的CSDN博客中的几篇文章分别介绍MyLayout布局体系中的视图从一个方向依次排列的线性布局(MyLinearLayout)、视图层叠且停靠于父布局视图某个位置的框架布局(M...
- 浏览器滚动条hover时变粗、改变颜色
-
今天应UED的要求对项目的滚动条进行美化,原生的滚动条虽然很实用,但确实不美观。用了一些css美化后::-webkit-scrollbar{height:9px;width:9...
- QML控件类型:ComboBox、Control(qml buttongroup)
-
Control一、描述Control是所有控件通用功能的抽象基类型。它从窗口系统接收输入事件,并在屏幕上绘制自身。二、控件布局控件的implicitWidth和implicitHeight通...
- 学习CSS布局:简单表格布局代码示例
-
性能优化-学习CSS布局:简单表格布局代码示例CSS是现代Web设计和开发的必备技能之一。而表格布局是Web页面中常用的布局之一,用于展示数据和信息。在这篇文章中,我们将介绍如何使用CSS创建一个简单...
- UE5之UMG基础第1篇:统一网格面板(ue5 新功能)
-
目标:记录和学习UE5的UMG方法制作UI,使用UniformGridPanel制作效果如下:步骤1.增加前言:UniformGridPanel统一网格面板,就是所有子元素大小和间隔等统一,这种效果...
- JS的 DOM 尺寸与位置属性(js设置dom属性)
-
#头条深一度-深度阅读计划#在JavaScript开发中,操作DOM元素的尺寸和位置是常见的任务,尤其是在实现动画、布局调整或响应式设计时。本文将全面解析JavaScript中与DOM...
- SpriteJS:图形库造轮子的那些事儿
-
从2017年到2020年,我花了大约4年的时间,从零到一,实现了一个可切换WebGL和Canvas2D渲染的,跨平台支持浏览器、SSR、小程序,基于DOM结构和支持响应式的,高...
- 理解CSS中的百分比单位:相对尺寸的核心规则
-
在CSS中,百分比(`%`)是一种灵活且强大的相对单位,但其具体行为常让开发者感到困惑。本文将深入解析百分比单位的计算规则,帮助你彻底掌握其背后的逻辑。一、百分比的核心:参考系(包含块)百分比的值始...
- 36个工作中常用的JavaScript函数片段「值得收藏」
-
作者:Eno_Yao转发链接:https://segmentfault.com/a/1190000022623676前言如果文章和笔记能带您一丝帮助或者启发,请不要吝啬你的赞和收藏,你的肯定是我前进的...
- 如何使用css完成视差滚动效果?(css 视距)
-
视差滚动(ParallaxScrolling)是指多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验我们可以把网页解刨成:背景层、内容层、悬浮层使用css形式实现视觉差滚动效果的方...
- vant-List 列表(vant select)
-
引入importVuefrom'vue';import{List}from'vant';Vue.use(List);基础用法List组件通过lo...
- Vue3问题:如何使用WangEditor富文本?能自定义才是真的会用!
-
笔者|大澈大家好,我是大澈!今天的问题,来自于上周末问题留言的朋友嘻嘻哈哈。欢迎大家在周末的问题留言推文中,积极进行问题留言,把这周工作日遇到的问题,分享给大家瞧瞧,或者直接进问答群,一起交流唠...
- 微信小程序开发极简入门(二):样式,页面,数据
-
前文:微信小程序开发极简入门(一)样式wxss:/**放在页面的wxss**/.scrollarea{flex:1;overflow-y:hidden;}.idx_view{...
- AI+Code驱动的M站首页重构实践:从技术债务到智能化开发
-
本文分享了阿里巴巴找品M站首页重构项目中AI+Code提效的实践经验。面对M站技术栈陈旧、开发效率低下的挑战,我们通过楼层动态化架构重构和AI智能脚手架,实现了70%首页场景的标准化覆盖+30%的...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- HTML button formtarget 属性 (30)
- CSS 水平对齐 (Horizontal Align) (30)
- opacity 属性 (32)