当前位置: 首页 > news >正文

excel-VBA知识点记录

1、计算机硬件的组成部分

内存,一旦断电,存储在里面的数据就消失了,而硬盘是永久存储数据的,所以刚开始我们在文件里面编辑没有按保存的时候,数据是在内存里面的,一旦断电数据就没了,但我们点了保存,数据就会存储到硬盘里面,永久保存啦。

                

2、数据存储方式

计算机最小存储单元:字节(单位:B),最小单位:位(单位:b),1字节=8位=1B=8b 

3、数据类型及变量

:布尔型、整数型、浮点型、字符型、数组、对象、类

 

4、布尔运算符

 5、高级语言不能直接被计算机执行,高级语言需要编译成为机器语言才能被计算机执行,程序运行过程图示:

6、 VBA命名方式

(1)可用字母,数字或一些标点符号命名,但第一个字符必须是字母

(2)不能使用空格

(3)不含有特殊类型的声明字符(#$%&!)

(4)变量名不区分大小写

7、运算符

(1)算术运算符

+、--、*、/、\(取商运算符)、Mod(取余运算符)

\取商运算符:7\2=3    Mod取余运算符:7 Mod 2 =1

(2)赋值运算符的优先级高于算术运算符

的含义是把8赋值给b,然后a+b

8、流程控制语句
(1)分支控制语句:if语句 select case语句

(2)循环语句:while循环语句 for next循环语句

小插曲:excel中时间表示:

1天=1  1小时=1/24  12点=12/24=0.5

在excel中时间的实质就是数值,

9、if条件判断语句使用:

(1)if 条件 then 结果

(2)if 条件 then 

                结果

        end if

ps:这里注意两种写法的区别:如果“结果”在下面,就需要加end if结束语句,如果“结果”在上面,就不需要写end if

(3)多条件分支:

if 条件 then 结果
else 结果
end if 
if 条件 then 结果
elseif 条件 then结果
else 结果
end if 

多条件嵌套语句:

10、select case语句

当判断条件太多时,用if看起来就太麻烦,代码可读性太差,这时就可以用select case 语句,进行多条件判断

语法:

select case 条件判断对象
case 条件1 结果
case 条件2 结果
case 条件3 结果
...
case else 全部条件都不满足的结果
end select

图示:

图一:                                       图二:

 

                                                                       图三:

ps:

(1)select case 条件判断对象,这个对象只是一个对象,不在这里进行条件判断,在下面的case后面进行判断,写法:<0.5,is是系统自动补足的

(2)如果结果跟case写在同一行,那条件后面一定要加“  冒号:“,见上面图二

如果结果放在case的下一行,那条件后面可以不用加”  冒号:“,见上面图三

11、循环语句Do...Loop循环

11.1、Do while...Loop的用法:

语法一:条件体在Do后面

Do While 条件表达式循环体
Loop

 语法二:条件体在Loop后面

Do循环体
Loop While 条件表达式

 两者的区别是:语法一是先判断条件,再进入循环,循环有可能一次都不执行;语法二是先进入循环再判断条件,循环至少循环一次。

 案例:(这里只举语法一的例子)

Sub 求和()Dim i As IntegerDim sum As Integeri = 1sum = 0Do While i <= 100sum = sum + ii = i + 1LoopMsgBox sumEnd Sub

ps:

(1)Msgbox 在vba里表示弹出一个显示框,类似于print打印的意思

(2)Do while ...Loop循环是,执行完一次循环体,执行Loop,然后再Do whlie 条件判断

(3)vba中添加注释的方法有两种:(1)加单引号'   (2)Rem+注释   

例:

Sub Example()' 这是单行注释Rem 这也是单行注释' 可以在单行的开始使用Rem,但不能在其他位置Dim i As Integeri = 10 ' 这是行内注释
End Sub

 循环结束设置:

标志法:主要用在循环次数不确定的情况下。其基本思想是:设置一个标志变量,标志变量的值随着循环发生变化,每循环一次,就测试一次标志变量的值,当标志变量的值等于指定标志值时,结束循环。

计数法:主要用在循环次数确定的情况下。其基本思想时:设置一个计数变量,称为计数器,循环开始前给出初始值,每循环一次,计数变量增1,直到计数变量的值达到指定次数。

上述代码中的i就是标志变量,用的就是标志法:

11.2、Do Until...Loop的用法: 

Until跟while的用法一样,不一样的是条件,Until后面的条件满足条件时,跳出循环,Until是”直到“的意思 ,while是满足条件执行循环,Until是满足条件跳出循环。

例子:下面循环的含义是当i>100时,跳出循环

Sub 求和2()Dim i As IntegerDim sum As Integeri = 1sum = 0Do Until i > 100sum = sum + ii = i + 1LoopMsgBox sumEnd Sub

12、For Next循环

语法:

Dim 变量 '定义一个变量
For 变量=初始值 To 最大值 (step 步长)循环体
Next

 for next循环用于有确定的循环次数的语句,

例:

'默认步长为1
Sub 求和2()Dim i As IntegerDim sum As IntegerFor i = 3 To 5sum = sum + iNextMsgBox sumEnd Sub'步长为2
Sub 求和2()Dim i As IntegerDim sum As IntegerFor i = 1 To 100 step 2sum = sum + iNextMsgBox sumEnd Sub'步长为-2
Sub 求和2()Dim i As IntegerDim sum As IntegerFor i = 100 To 1 step -2sum = sum + iNextMsgBox sumEnd Su

ps:

(1)步长可以为负,

(2)在VBA中对于整型变量,可以不用赋初值,默认是0,不写步长,默认是1,只是在VBA里面,如果在C语言里,一定要赋初值

13、循环语句 For Each ... in Next

作用:针对一个集合或是数组中的每个元素重复执行操作

语法:

例:

Sub 循环()Dim rng As RangeFor Each rng In Range("A1:A3")rng.Value = 1Next
End Sub

结果:

ps:

(1)Range是对象类型,rng是对象变量,

(2)代码的含义是:rng=A1时,给单元格赋值1,当rng=A2时,给单元格赋值1,rng=A3时,给单元格赋值1,结束循环

总结:几个语句的区别:

 14、变量定义

(1)变体型:Variant

语法:

Dim a as Variant

当你不知道输入数据是什么类型时,可以定义为变体型,到时候系统会根据用户输入的数据,来自动判断数据类型,但是变体型的存储空间会很大,都使用变体型的话会使得系统变慢,如果你没有明确一个变量的类型,那变量的类型默认是变体型。

(2)数组类型

定义:

Dim a(2) as integer

 ps:

① 关于存储空间,定义变量,系统给每个变量分配的存储空间是随机的,但是数组不一样,定义一个数组,那系统就会给这个数组分配一个连续的存储空间,里面的元素按照从a[0]开始往后顺序存储,是有序的

② 一个数组里面只能放相同的数据类型

(3)结构体

① 作用:是一种聚合数据类型,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。

② 语法:

'自定义一个数据类型
Struct student{char nameint agechar sexfloat score
}'定义一个变量
Struct student zhangru'给变量赋值
zhangru.name="林耶"
zhangru.age=18
zhangru.sex="女"
zhangru.score=99

这个Struct student是用户自定义的student的数据类型,系统内存分配图示:

 ③ 结构体嵌套

'结构体嵌套
Struct student{char nameint agechar sexfloat scoreStruct date{int yearint monthint day}bir
}'定义一个变量
Struct student linye'给嵌套变量赋值
linye.bir.year = 2005
linye.bir.month = 2
linye.bir.day = 5

 重点:一个对象的属性可能是一个值,也可能是另一个对象

点运算符:结构体变量名.成员名

15、函数调用

vba里面的sub过程就相当于函数过程

调用方式:

call 函数名

call可以省略,直接写一个函数名,可以进行传参,函数调用和传参过程如下: 

16、变量的作用域和生命周期

(1)过程变量:定义在过程中的变量叫做过程变量,该变量只能使用在该过程中,不用被其他过程使用,例如下面的demo2中不能使用demo1中的a

在不同的过程中,可以定义相同的变量名,不会相互影响 

(2) 模块变量:在模块里面定义的变量,在过程之外,每个过程都可以调用,图示:

(3)全局变量:在模块里面定义一个全局变量,在过程之外,每个模块都可以调用,图示:

各个变量的生命周期:

ps:过程的调用:

在过程前面加上Public或者省略,都是代表这个过程是公共过程,所以模块都可以调用这个过程;

如果在过程前面加上private代表这个过程是私有过程,只能在本模块中被调用,图示:

Option ExplicitPublic a As Integer'私有过程
Private Sub demo1()a = 100MsgBox a
End Sub'公共过程
Public Sub demo2() MsgBox a 
End Sub'公共过程
Sub demo2()  MsgBox a
End Sub

17、静态变量

普通变量和静态变量的区别:

(1)静态变量

代码: 关键字static

Sub 静态变量()Static a As IntegerDim i As Rangea = a + 3Cells(1, 1) = aEnd Sub

静态变量的特点是:可以保留上一次变量的值,也就是上一次变量的值会保留在内存中,不会被释放,如果要释放可以手工写代码让他释放,,或者等整个程序关闭的时候就会释放。

图示:

区别:程序执行第一次,执行完a不会被释放,会保留值,当第二次再运行的时候,就在a=3的基础上计算,但是普通变量是程序执行完一次a就会被释放,释放完第二次再运行的时候,还从新定义变量a

 (2)普通变量

代码:cells(1,1):选取单元格A1,cells函数就是选取excel单元格的函数

Sub 普通变量()Dim a As Integera = a + 3Cells(1, 1) = aEnd Sub

结果:

代码在内存执行过程:

dim a as integer以后在内存分配一块空间给a存储----->>>>然后执行a=a+3----->>>>然后把a赋值给A1单元格,结束后执行end sub,过程结束,变量a的空间被释放,过程图示:

18、excel定义常量、ByVal按值传递、ByRef按引用传递

(1)定义常量:公式-定义名称-名称用于计算

                            

(2) 在VBA中定义常量的写法:

Const PI=3.1415926

(3) ByVal按值传递

代码:

Sub usechage()Dim x As Integerx = 5change x '输出change过程的x值MsgBox x '输出本过程的x的值
End SubSub change(ByVal x As Integer)x = x + 2 '更改x的值MsgBox x
End Sub

结果:第一个x的结果是7(change过程的x值),第二个x的结果是5(本过程x)

                                          

在形参前面加上ByVal后,传递的x就只传递x的值,也就是复制一个x的值,给形参x,形参x和实参x不是同一个值,这就是按值传递。

当形参前面不加ByVal的时候,是按引用传递(默认),关键字:ByRef,按引用传递是,形参和实参存储在两个空间,形参引用的是实参的地址,所以当change过程更改了x的值,实参的值也会变,代码:

Sub usechage()Dim x As Integerx = 5change xMsgBox x
End SubSub change(ByRef x As Integer)x = x + 2MsgBox x
End Sub

结果:

                                     

 图示:

 

 

 

 

相关文章:

excel-VBA知识点记录

1、计算机硬件的组成部分 内存&#xff0c;一旦断电&#xff0c;存储在里面的数据就消失了&#xff0c;而硬盘是永久存储数据的&#xff0c;所以刚开始我们在文件里面编辑没有按保存的时候&#xff0c;数据是在内存里面的&#xff0c;一旦断电数据就没了&#xff0c;但我们点了…...

RabbitMQ——消息的可靠性处理

1.业务分析 在业务的开发中&#xff0c;我们通常将业务的非核心业务交给MQ来处理&#xff0c;比如支付&#xff0c;在支付过后&#xff0c;我们需要扣减余额&#xff0c;修改支付单状态&#xff0c;修改订单状态&#xff0c;发送短信提醒用户&#xff0c;给用户增加积分等等&am…...

babylon.js-1:入门篇

最近项目中使用到了 Babylon.js 这门技术&#xff0c;从今天开始&#xff0c;抽取自己写的比较好的拿出来&#xff0c;作为分享案例&#xff1a; 记录学习成果通过笔记的方式记录技术积累方便工作中查找翻阅实现案例 是什么 Babylon.js是一个基于WebGL的开源3D渲染引擎&…...

VS Code调整字体大小

##在工程目录底下.vscode/settings.json添加设置参数 {"editor.fontSize": 15,"window.zoomLevel": 1.5 }...

Python基础语句教学

Python是一种高级的编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简单易读的语法和强大的功能而闻名&#xff0c;被广泛用于科学计算、Web开发、数据分析等领域。 Python的应用领域广泛&#xff0c;可以用于开发桌面应用程序、Web应用、游戏、数据分析、人工智能等…...

ansible 配置

目录 1.集群自动化维护工具 ansible 2.ansible管理架构 3.安装ansible 4.Iventory主机模式 5.通过ping验证 6.ansible常用模块 7.命令行模块 7.1command模块 7.2shell模块 7.3scripts模块 7.4file模块 7.5copy模块​ 7.6yum模块 1.集群自动化维护工具 ansibl…...

堆排序算法详解:原理与Python实现

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…...

[论文阅读] ChartInstruct: Instruction Tuning for Chart Comprehension and Reasoning

原文链接&#xff1a;http://arxiv.org/abs/2403.09028 源码链接&#xff1a;https://github.com/vis-nlp/ChartInstruct 启发&#xff1a;本文构建的instruction-tuning数据集以及使用该数据集对模型进行微调的过程都值得学习。 Abstract 研究对象&#xff1a;图表 研究…...

基于springboot+vue学生宿舍管理系统设计与实现

博主介绍&#xff1a;专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…...

【Android】模糊搜索与数据处理

【Android】模糊搜索与数据处理 本篇博客主要以根据输入内容动态获取城市为例进行讲解。 获取城市 这一部分主要是根据输入的信息去动态获取城市信息 首先定义了一个名为 NetUtil 的类&#xff0c;主要用于通过 HTTP 请求获取城市信息。 public class NetUtil {private stat…...

机器学习-KNN

KNN&#xff1a;K最邻近算法&#xff08;K-Nearest Neighbor,KNN&#xff09; 用特征空间中距离待分类对象的最近的K个样例点的类别来预测。 投票法&#xff1a;K 个样例的对数类别。 k1:最近邻分类 k 通常是奇数&#xff08;因为我们根据这个K数据判断类别&#xff0c;如果…...

python 安装包 site-packages

1. site-packages 文件夹的位置 当我们通过 pip 或其他方式安装一个 Python 包时&#xff0c;这些包的文件就会被复制到 site-packages 文件夹下。 site-packages 文件夹通常位于 Python 的安装目录下的 Lib 文件夹内。具体的路径会根据你使用的操作系统和 Python 版本的不同而…...

大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

CentOS8.5.2111(3)实验之DHCP服务器架设

一、实验目标 1&#xff0e;掌握DHCP服务器的主配置文件各项申明参数及操作及其含义 2. 具备DHCP 服务器、中继服务器的配置能力 3. 具备测试客户端正常获取服务器分配地址的能力 4. 具备DHCP服务器故障排除能力 二、实训原理/流程 &#xff08;一&#xff09;项目背景 …...

机器学习(4):机器学习项目步骤(一)——定义问题

1. 机器学习项目的五大步骤 定义问题 收集数据和预处理 选择算法和确定模型 训练拟合模型 评估优化模型性能 2. 定义问题的主要任务 刨析业务场景&#xff0c;设定清晰目标&#xff0c;同时还要确定当前问题属于哪一种机器学习类型。 3. “易速鲜花”项目案例 项目任务&a…...

C#中Socket通信常用的方法

创建Socket 在C#中创建一个Socket对象的基本步骤如下&#xff1a; 引入命名空间&#xff1a; 首先&#xff0c;确保你的文件顶部包含了以下命名空间的引用&#xff1a; using System.Net; using System.Net.Sockets; 创建Socket实例&#xff1a; 你可以创建一个Socket实例&am…...

【JavaEE】——单例模式引起的多线程安全问题:“饿汉/懒汉”模式,及解决思路和方法(面试高频)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能够帮助到你&#xff01; 目录 一&#xff1a;单例模式&#xff08;singleton&#xff09; 1&#xff1a;概念 二&#xff1a;“饿汉模…...

huggingface实现中文文本分类

目录 1 自定义数据集 2 分词 2.1 重写collate_fn方法 3 用BertModel加载预训练模型 4 模型试算 5 定义下游任务 6 训练 7 测试 #导包 import torch from datasets import load_from_disk #用于加载本地磁盘的datasets文件 1 自定义数据集 #自定义数据集 #…...

基于python+控制台+txt文档实现学生成绩管理系统(含课程实训报告)

目录 第一章 需求分析 第二章 系统设计 2.1 系统功能结构 2.1.1 学生信息管理系统的七大模块 2.1.2 系统业务流程 2.2 系统开发必备环境 第三章 主函数设计 3.1 主函数界面运行效果图 3.2 主函数的业务流程 3.3 函数设计 第四章 详细设计及实现 4.1 学生信息录入模块的设计与实…...

Spring Boot 整合MyBatis-Plus 实现多层次树结构的异步加载功能

文章目录 1&#xff0c;前言2&#xff0c;什么是多层次树结构&#xff1f;3&#xff0c;异步加载的意义4&#xff0c;技术选型与实现思路5&#xff0c;具体案例5.1&#xff0c;项目结构5.2&#xff0c;项目配置&#xff08;pom.xml&#xff09;5.3&#xff0c;配置文件&#xf…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...