vba set语句_零基础学VBA编程06:什么是变量?

article/2025/11/11 5:24:07
ebbcfaa9cfc3e0f52fe4fdb6d04d495d.png 每天一篇原创Excel图文 微信公众号:Excel星球 NO.81-什么是变量? 作者:看见星光 微博:EXCELers / 知识星球:Excel

哈罗,大家好,我是星光,今天给大家聊一下编程中一个非常重要的概念——变量。变量这个词有些朋友可能感到陌生,但其实就概念来说,无论在生活中还是在学习上,变量都是无处不在的。
你的身高是变量,你小时候身高=1米2,后来你长大了,身高=1米8。你考试的成绩是变量,你小时候学渣,成绩=45,你长大了学霸,成绩=150。你玩王者荣耀时角色的生命值也是变量,满血时生命=3200,残血时生命=300;你一顿操作猛如虎,一看战绩……9-0,战绩=9-0还是变量——所以,什么是变量?变量在编程中的意义和作用是什么?

什么是变量


所谓变量,就是储存数据的容器,就好比贴着标签装着数据的盒子。标签是变量的名称,不占据盒子内的空间,比如身高 ;盒子里装着的数据是可以改变的,比如1米2,后来变成了1米8等。
……我们可以把计算机看成是一个人,它的脑袋十分巨大,里面整齐的摆放着成千上万个小盒子,也就是脑细胞;每一个小盒子都是一个空间,有 多种类型 ,可以装各种的数据;但一个盒子只能放一个数据。我们只有将数据装到计算机的脑袋里,才能让它帮助我们分析和处理数据——那我们如何将数据装到计算机的脑袋里去?
打个响指,很简单,代码如下。
身高=180

代码中的"="是赋值符号(不是判断符等于号,两者的区别我们以后会聊)。这句代码的意思是我们在计算机的大脑袋里申请了一个小盒子,贴上标签: 身高 ,盒子里装上数据: 180 。这样一来,计算机就知道名字为 身高 的小盒子里装着数据 180 了。
后来一段时间你吃了好多鱼……好吧,还吃了不少卫龙辣条,于是身高莫名其妙长高了,我们得把这事告诉计算机,把身高数据更新一下。
身高=190

于是计算机按照标签 "身高" ,取出小盒子。由于一个盒子只能放一个数据,要装新的数据,计算机就会用新数据覆盖掉旧数据,所以最后名为 "身高" 的小盒子里装着数据是190。
试试按分步运行以下Sub过程,在本地窗口观察 "身高" 的变化,以及最后返回的值是多少?
Sub 变量()    Dim 身高 As Byte    身高 = 120    身高 = 130    身高 = 140    身高 = 140    身高 = 180    MsgBox 身高End Sub

如你所想,这里名为"身高"的小盒子即是变量,很显然,它有两部分构成:名称和值, 值可以变,但名称不变 ,以不变应万变。
就这么回事。 什么是声明变量 我们上一节讲过,数据是有类型的,在VBA中数据的类型可以划分为……上一章的那么多种(摊手,没办法,我就是这么懒,别指望我重说一遍)。而变量是装数据的容器,也是有类型的。简而言之,数据有多少类型,变量就有多少类型。 声明变量,就是给数据指定不同类型的小盒子,并贴上标签名字。
在VBA中如何声明变量呢?最常见的是使用Dim语句。语法格式如下:
Dim 变量名 As 变量类型

我举个一个小栗子。
Sub 声明变量()    Dim 身高 As Byte    身高 = 180    身高 = 300End Sub
▎代码解析:
第2行代码, Dim 身高 As Byte 是声明变量,意思是向计算机申请一个专门用来装Byte数据类型的小盒子,1个字节大小,范围是0~255之间的整数,并贴上标签"身高"。
第3行代码,身高=180,想必你已经知道什么意思了,给变量身高赋值,也就是往名为"身高"的小盒子里装入一个数据180。
第4行代码,身高=300,想必你还是知道——但其实你不知道,微微笑。咱们在第2行代码声明了变量 身高 的类型是Byte,所以只能用来装0~255之间的整数,这里却要求计算机装300。 盒子太小,它装不下,于是会弹出一个提示溢出的警告框,同时中断程序运行:

4df791aa714cb860fb89a61ed4e8e903.png


……
有个叫 看见我蓝了吗? 的网友发来提问:星光大熊迪,请问声明变量是必需的吗?
答:……这个问题,有两种情况。一种是声明了变量,但没有指定类型,示例代码如下。
Sub 变体变量()    Dim 身高    身高 = 120    身高 = "我很高"    MsgBox 身高End Sub

第2行代码中声明了变量"身高",但没有指定类型,则系统默认为变体型。什么是变体?咱们上节课讲过了。变体型变量就像一个万能的小盒子,啥都能往里装,它会自动调整数据类型。第3行代码 身高=120 ,我们往名为"身高"的小盒子里装了个数值120;第4行代码 身高="我很高" ,我们往小盒子里又装了个字符串"我很高",同时覆盖掉了旧数据120,此时小盒子装的就是字符串"我很高"。
还有一种情况,变量声明都不声明,带头大哥附体挽起袖子直接干,示例代码如下:
Sub 变量不声明就用()    身高 = 120    身高 = "我真的很高"    MsgBox 身高End Sub

这段代码并没有声明变量身高,第2行代码直接就赋值了。系统同样默认身高为变量,类型为变体,作用类同上一段代码。
这时可能有朋友就想了,既然变体变量什么都能装,还会自动调整数据类型,连声明都可以省了(能偷懒?激动的搓搓手),那干嘛还声明变量呢?直接举国体制一刀切,全部用变体不就行了?
长者曰:小同志,你这个想法很大胆啊。变体变量确实省事又好用,但是,一来它占据的内存空间可能比较大——好吧,咱是有别墅的人了,这点大部分情况下都不重要;但麻烦的是变体不够聪明,怎么不够聪明法?——咱们后面有个单章专门再聊。
……
有个叫 姐要三宫六院七十二男妃 的网友发来提问:星光哥哥,你举的例子都是声明一个变量,如果需要声明多个变量,代码应该怎么写?
答:可以一行代码声明一个变量,多个变量用多行声明。示例如下。
Sub 多行声明多个变量()    Dim s As String '声明变量s为字符串    Dim i As Long '声明变量i为long    Dim j As Long '声明变量j为longEnd Sub

另外,VBA是支持一行代码声明多个变量的,不过每个变量都需要指定数据类型, 如果没有指定数据类型,则默认为变体Variant 。
举两个例子,下面是一行代码声明了多个变量,每个变量都指定了类型,只在开头使用了一个DIM。代码如看不全,可以左右拖动..▼
Sub 一行代码声明多个变量()    Dim s As String, i As Long, j As LongEnd Sub

下面也是一行代码声明了多个变量,但只在最后一个变量指定了类型为字符串。在有的编程语言中,这意味着a/b/c三个变量都是字符串类型,但在VBA中不是,只有c是字符串类型,a/b没有指定类型,则默认为变体。
Sub 一行代码声明多个变量()    Dim a, b, c As StringEnd Sub

……
还有个叫 和尚洗头用飘柔 的网友发来提问:在泡论坛时,经常见到有人声明变量i%,j&,s$,d#,请问%&$#是什么鬼? f4fa9226207097b6d9ac3f58a86f173f.png
答:和尚莫慌,我有李云龙画像在此。它们不是鬼哩,是类型声明符,或者说变量类型缩写。不过不是所有的数据类型都支持声明符,常用的只有4个。其中%是整数型Integer(其实已经不常用了,但看古董级代码时会见到),&是长整形Long(最常用的一个),$是字符串string($看起来就像string的首字母s),#是双精度浮点Double(#可以理解为双精度的双)。
……聊完了如何声明对象,看个广告放松一下,接下去咱们再说下如何为变量赋值。
如何为变量赋值
所谓为变量赋值,是指把数据储存到变量中。常见的有两种情况;一种是非对象类型的变量赋值,比如数值、字符串、日期等;一种是为对象(Object)类型的变量赋值,比如工作表等。
先说一下非对象类型的变量赋值——其实你已经会了,也就是类似咱们前面小节所使用的语句 身高=120 。它的完整语法如下:
[Let] 变量名=值

其中关键字Let是可以省略的,正常情况下,也都是省略的。 所不同的是为对象类型的数据赋值 ,比如工作簿、工作表、单元格等对象。语法如下:
Set 变量名=值

语法中的关键字Set是不能省略的,不然你会找不到对象——看我眼神,骗你娶你,不论男女。
举个例子,将当前活动工作表赋值给变量sht,代码如下。
Sub 对象变量赋值()    Dim sht As Worksheet '定义变量类型为工作表。    Set sht = ActiveSheet '将当前工作表赋值给变量sht    MsgBox sht.Name '消息框显示当前工作表的名称End Sub

第3行代码是将当前工作表赋值给变量sht,这时关键字Set是不能省略的,如果省略Set,系统会发出如下所示的警告对话框,同时中断程序运行。 9441644a1b0e864b178da8d647a33fdb.png 贴士: ▎为对象类型的变量赋值时遗漏Set,是新人最常见的错误;如果你以后也经常犯这样的错误,麻烦告诉我一声你到底有没有对象,是不是从来没被掐破肉过?多么痛的领悟!!!……我朋友。
……
打个响指,再给大家看另一个很典型的变量赋值的小栗子。
Sub 累加变量()    Dim k As Long    k = 1    k = k + 1    MsgBox "变量k的值是:" & kEnd Sub

▎代码解析:
第2行代码是声明变量,其名为k,其类为long,k之大,你知我知庄子不知。

第3行代码为变量k赋值,其值为1。

第4行代码是k=k+1,想一想,这句代码是怎么运行的?

第5行代码使用消息框显示结果为2,猜一猜,为什么是2?

1733e6136dd871daa822f6f3638959e0.png

代码之所以返回变量k的值为2,是因为语句k=k+1的作用是将k在原值(本例为1)的基础上增加了1。

那么计算机是怎么运行k=k+1的?

这句代码包含了两个操作符,一个是"+",另一个是赋值号"="。"+"的运算优先级要高于"=",因此计算机先执行k+1,结果为2;然后再执行赋值,将2赋值给变量k。

这就是一个典型的变量=表达式的赋值语句。

那么,再思考一下,下面的语句会返回什么呢?为什么?

Sub 测试()    Dim k As Long    k = 1    MsgBox k + 1 = kEnd Sub

那谁,您先想着,我这有点事,就先走了。噢,对了,麻烦记得关注我一下,关注不迷路,见面不尴尬,你说是不是这理儿?握手,咱们下期再贱。

▎系统学习Excel
推荐加入我的Excel社群 ▎ 66ade44a3eb27060b56fb7a8cdd4a7f7.png 扩展阅读 f65debe514c6ced430d910c022c7fad9.png 48c41e70f6729924a8fef258bdf28ad2.png 497ff197f0890553000bd03bab814f68.png

http://chatgpt.dhexx.cn/article/Zf7kj397.shtml

相关文章

Excel VBA使用总结

Excel VBA 1.入门1.1开启VBA之旅 2.语法2.1清除单元格内容2.2vba设密码2.3以前的代码2.4使用正则2.5使用stack 都说世界上最好的语言就是PPT,工作报告,年度总结。。。。 到处都有它的身影,更是被高手设计的惟妙惟肖。 今天,我们不争第一&…

VBA录制宏知识整理

XIWENJIE_VBA基础简介之录制宏 A.录制宏的使用 一、什么是宏 VBA是 [Visual Basic](https://baike.baidu.com/item/Visual Basic)的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是[Microsoft Office](…

excel VBA编程入门,自定义excel数据库模板生成sql语句

文章目录 VBA基础一.了解VBA1.进入vba2.认识宏 二. VBA编程1.hello world2.调出立即窗口和本地窗口3.debug显示4.注释5.数据类型5.变量的生命周期和定义域6.判断语句7.不等于<> , switch case 条件判断8.循环do while退出循环的语句 exit for退出循环的语句 exit do 9.数…

Excel Vba编程初探一

【场景】对EXCEL表格批量添加公式 【分析】 1、如何给单元格写值/公式 2、公式如何带变量 【Excel设置】 【实现】 0&#xff09;代码书写的地方 1&#xff09;代码 Sheet1被激活时触发 Private Sub Worksheet_Activate() Call SetFormula Call TestSetA1ToA10 End Sub函…

二 详解VBA编程是什么

详解VBA编程是什么 直到 90 年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化…

CSS入门(二)

CSS入门&#xff08;一&#xff09; https://blog.csdn.net/Veer_c/article/details/103882856 CSS文本属性和值&#xff1a; <style type"text/css"> div{/*设置字符间距*/letter-spacing:4px;/*设置文本的位置*/text-align:center;/*给文本设置上划/下划/中…

【前端学习】CSS入门

前端学习&#xff1a;CSS入门 文章目录 前端学习&#xff1a;CSS入门前言1、class011.我的第一个CSS2.导入方式3.基本选择器(1)ID选择器(2)标签选择器(3)类选择器 4.层次选择器5.结构伪类选择器6.属性选择器 2、class021.span/div2.字体样式3.文本样式4.超链接伪类5.列表 3、cl…

CSS入门必备基础(适合小白)

CSS入门必备基础&#xff08;适合小白&#xff09; 一、CSS是什么&#xff1f;1、什么是CSS&#xff1f;2、CSS有什么作用&#xff1f; 二、CSS核心基础1、CSS样式规则2、引入CSS的方法1)、行内式2)、内嵌式3)、链入式 2、CSS选择器1)、基础选择器2)、后代选择器3)、并集选择器…

网页搭建入门---CSS入门

目录 CSS基础语法 CSS选择器 选择器 基于关系的选择器 伪类 伪元素 优先级别 CSS样式 背景 文本 ​ 字体 链接 列表 表格 ​ CSS布局 CSS盒子模型 边框 内边距 外边距 CSS基础语法 为什么要使用CSS 样式定义如何显示HTML元素是为了解决内容与表现分离的问…

postcss入门

无需安装任何环境&#xff0c;即可在线体验未来的css生态系统。 一、什么是postcss 一个用 JavaScript 工具和插件转换 CSS 代码的工具&#xff0c;一套css的生态系统&#xff0c;通过组合插件的形式让我们更舒适的编写css。 二、它能做什么&#xff1f; 1.增强代码兼容性 …

CSS基础入门(详细总结笔记)

目录 1、CSS介绍 2、CSS引入方式 2.1、行内样式 2.2、内联样式 2.3、外联样式 2.4、样式的优先级 2.5、样式选择 3、CSS选择器 3.1、基本选择器 3.2、属性选择器 3.3、层级选择器 3.4、组合选择器 3.5、伪类选择器 3.6、通配符 3.7、选择器优先级 4、CSS盒子模…

CSS入门。(仅供参考)

文档出处部分Coogle和《原创》&#xff0c;如有雷同纯属巧合 《仅供参考》 首先说明以下内容是本人自己整理&#xff08;仅供参考&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 首先浏览器我建议使用Googl…

零基础CSS入门教程(17)–表格样式

点此查看 所有教程、项目、源码导航 本文目录 1. 题外话2. 前言3. HTML表格边框4. CSS设定表格边框5. 设定列边框6. 折叠边框7. 表格尺寸8. 表格内边距9. 表格背景色10. 小结 1. 题外话 不知不觉&#xff0c;写到第40篇了。 可能已经是我写过的最长的系列文章了&#xff0c;虽…

一套完整的CSS入门教程

最近花了点时间&#xff0c;整理了一下之前的CSS博客文章&#xff0c;完成了这个CSS教程。也为我的个人网站&#xff0c;增加了一个教程模块。教程模块地址&#xff1a;请点击这里。教程地址&#xff1a;请点击这里。 该教程是一套完整的CSS入门教程&#xff0c;看了绝对不会…

CSS入门基础详解——笔记、案例

CSS入门学习 一、CSS简介 1、什么是css css:层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML&#xff08;标准通用标记语言的一个应用&#xff09;或XML&#xff08;标准通用标记语言的一个子集&#xff09;等文件样式的计算机语言。 2、CSS的作…

CSS入门 练习

CSS入门 练习 CSS练习1 -- 画三角形CSS练习2 -- 画太极 CSS练习1 – 画三角形 代码&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> <style type"text/css"> #…

头歌-CSS入门

目录 CSS从入门到精通-文本与字体样式 第1关 字体颜色、类型与大小 第2关 字体粗细与风格 第3关 文本装饰与文本布局 CSS从入门到精通-背景样式 第1关 背景颜色 第2关 背景图片 第3关 背景定位与背景关联 CSS从入门到精通-基础选择器 第1关 CSS 元素选择器 第2关 CSS…

CSS入门到精通——表格样式

第1关&#xff1a;表格边框 任务描述 本关任务&#xff1a;在本关中&#xff0c;我们将学习如何使用CSS设置表格样式&#xff0c;使表格更好看。本关任务完成之后的效果图(index.html)如下&#xff1a; 相关知识 为了完成本关任务&#xff0c;请大家认真阅读以下内容。 在之…

Tailwind CSS 入门和实践

作者&#xff1a;康曾璐 背景 Tailwind 是一个基于 Atomic/Utility-First 规范 CSS 框架&#xff0c;提供了基础的工具类 utility classes&#xff08;如&#xff1a;内边距 padding、字体 text 和 font、动画 transition 等预设类&#xff09;&#xff0c;能直接在脚本标记语…

CSS入门

CSS入门学习 一、CSS简介 1、什么是CSS CSS&#xff1a;Cascading Style Sheet 层叠样式表 是一组样式设置的规则&#xff0c;用于控制页面的外观样式 2、为什么使用CSS 实现内容与样式的分离&#xff0c;便于团队开发 样式复用&#xff0c;便于网站的后期维护 页面的精确控…