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

excel VBA 基础教程

这里写目录标题

  • 快捷键
    • 选择所有有内容的地方
  • 调试
  • VBA
  • 录制宏,打开VBA开发工具
    • 录制宏,相当于excel自动写代码(两个表格内容完全一致才可以)
  • 查看宏代码
  • 保持含有宏程序的文件xlsm后缀(注意很容易有病毒)
    • 宏文件安全设置
  • 使用相对引用宏录制
    • 代码格式设置
    • 相对引用(选择没有定死)
  • 通过表单控制宏运行
  • 快速访问工具栏
  • 保存宏到个人宏工作簿
  • VBE 开发环境
    • 工具栏
    • 工程窗口
    • 模块和工作表
    • 插入模块、移除(把代码专门保存,在不同文件中使用)
    • 窗口切换
  • 编写第一个代码
  • 变量
  • 案例 CurrentRegion Syntax
  • Counting the Rows and Columns in the Current Region
  • Clearing the Current Region
  • Assigning the Current Region to a Variable
  • Get the Start and End Cells in the Current Region
    • 不同文档
  • 语法

————————————————

最近要用到excel 发现好多不会的,折腾了半天,发现还是要系统学习一下。
文件全部来自:宏与VBA

VBA语法

VBA教程

VBA代码
activesheet.UsedRange

个人建议,先看上面视频教程,然后再看语法,然后操作一下就会了,大概一天时间。

快捷键

选择所有有内容的地方

选中左上角第一个表格单元,然后Ctrl +A 选中内容
!——单精度浮点数 1个感叹号,所以是单精度。
#——双精度浮点数 二横二竖,所以是双精度。

$——字符串型 外形像极了S,所以是String,文字型么

&——长整型 外形像L的花体字,所以是Long,长整型么。

@——货币型 这个好说,一般也这么用的。 @=Price么。

%——整型 百分比符号,百来个整数,当然非integer整数型莫属了。

调试

在这里插入图片描述

VBA

Note:
宏程序不可撤销(Ctrl+Z也不行)
宏就是一个程序,可以录制

在这里插入图片描述

录制宏,打开VBA开发工具

在这里插入图片描述
然后就有了开发工具
在这里插入图片描述

录制宏,相当于excel自动写代码(两个表格内容完全一致才可以)

1)打开宏
2) 填充宏名字,说明,以及快捷键(可以不设置)
3)操作表格进行录制
4)结束录制
5)在其它文件执行宏
在这里插入图片描述

查看宏代码

1)打开VB
2)打开工程管理器
3)通过±来看内容
4)Microsoft Excel 工作簿中当前内容
5)模块,双击,能看到当前宏的代码
6)可以通过ALt + F11快速切换
在这里插入图片描述

保持含有宏程序的文件xlsm后缀(注意很容易有病毒)

1)常规文件xlsx,会丢失宏
2) 宏程序文件,后缀名比较特殊(xlsm)
3)再次打开启用宏
4)如果禁用了,关闭后再次打开
在这里插入图片描述
在这里插入图片描述

宏文件安全设置

1)指定一个路径设置为信任路径,每次打开不用设置宏
在这里插入图片描述
在这里插入图片描述
受信任位置
在这里插入图片描述

使用相对引用宏录制

代码格式设置

在这里插入图片描述

相对引用(选择没有定死)

比如隔行变色,相对于当前的位置
下面代码关键点是offset(2,0
1)使用相对引用
2)宏录制
3)操作
4)结束
5)重复执行宏
a)选中一个单元格
b)执行宏
在这里插入图片描述

通过表单控制宏运行

快捷键和上面的执行比较麻烦,可以通过【控件】执行,很方便(没搞懂)
在这里插入图片描述

快速访问工具栏

1) 选项-》然后如下设置
(没跑通,待定)
在这里插入图片描述

保存宏到个人宏工作簿

1)录制宏
2) 个人宏工作簿保存至【当前】
3)个人宏工作簿
4)从打开的文档中可以找到,在其它文档中引用
在这里插入图片描述
引用宏,别的文档中的宏引用到目前文档,前提是另外的文档要打开
在这里插入图片描述
如何把宏单独保存
在这里插入图片描述
可以看到
在这里插入图片描述
查看宏保存在哪里,如下就可以看到啦,实际藏了一个隐形的文件,反之可以隐藏
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b22ca4360094431da10c2989c914b541.png在这里插入图片描述
这样就可以在其它的文档中用这个宏了,这个相当于设置了全局的宏,跨文档运行。

VBE 开发环境

工具栏

在这里插入图片描述

工程窗口

在这里插入图片描述

模块和工作表

录制宏就在模块中
可以针对表1来进行操作
在这里插入图片描述

插入模块、移除(把代码专门保存,在不同文件中使用)

在这里插入图片描述
移除,保存bas
在这里插入图片描述
导入模块
在这里插入图片描述

窗口切换

最大化
在这里插入图片描述
选择其它窗口
在这里插入图片描述
水平、垂直窗口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编写第一个代码

1)插入模块
2)编写代码

Sub namexx()
'卡住一个窗口MsgBox "This is my first VBA code"
End Sub

效果如下:
在这里插入图片描述

变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

地址:https://docs.microsoft.com/zh-cn/office/vba/language/reference/functions-visual-basic-for-applications
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例 CurrentRegion Syntax

CurrentRegion返回活动单元格所在的周围由空行和空列组成的单元格区域(即通常所说的当前区域),该区域为活动单元格附近不为空的单元格范围,该范围截止区域为空行、空列,以示例说话
https://blog.csdn.net/weixin_43721369/article/details/92063448
其中“E11”是一个固定的
在这里插入图片描述

Sub FindCurrentRegion()Dim rng As Range
'set the range to be Cell E11Set rng = Range("E11")
'select the current regionrng.CurrentRegion.Select
End Sub

Counting the Rows and Columns in the Current Region

在这里插入图片描述

Sub FindCurrentRegion()Dim rng As RangeDim iRw As IntegerDim iCol As Integer
'set the rangeSet rng = Range("E11")
'count the rowsiRw = rng.CurrentRegion.Rows.Count
'count the columnsiCol = rng.CurrentRegion.Columns.Count
'show the result in a message boxMsgBox ("We have " & iRw & " rows and " & iCol & " columns in our current region")
End Sub

Clearing the Current Region

在这里插入图片描述

Sub ClearCurrentRegion()Dim rng As Range
'set the rangeSet rng = Range("E11")rng.CurrentRegion.Clear
End Sub

Assigning the Current Region to a Variable

Sub AssignCurrentRegionToVariable()Dim rng As Range
'set the range to be the current region of E11Set rng = Range("E11").CurrentRegion
'color the background and textrng.Interior.Pattern = xlSolidrng.Interior.Color = 65535rng.Font.Bold = Truerng.Font.Color = -16776961
End Sub

在这里插入图片描述

Get the Start and End Cells in the Current Region

Sub GetStartAndEndCells()Dim rng As RangeDim iRw As IntegerDim iCol As IntegerDim iColStart, iColEnd, iRwStart, iRwEnd As String
'set the range variable to be the current region of E11Set rng = Range("E11").CurrentRegion
'set the start column for the rangeiColStart = rng.Column
'get the end column for the rangeiColEnd = iColStart + (rng.Columns.Count - 1)
'get the start row for the rangeiRwStart = rng.Row
'get the end row for the rangeiRwEnd = iRwStart + (rng.Rows.Count - 1)
'display the address of the start and end rows and columns in a message boxMsgBox ("The Range start at " & Cells(iRwStart, iColStart).Address & " and ends at " & Cells(iRwEnd, iColEnd).Address)
End Sub

在这里插入图片描述

不同文档

在这里插入图片描述

语法

典型程序
在这里插入图片描述

sub-End Sub

开始结束

Sub test_1_VA()
' test_1_VA 宏
' 实验内容
End Sub

1)注释用单撇号
2)选择 Rows(“2:2”).Select
3)ActiveCell活动单元格
4)ActiveCell.Offset(2, 0)

相关文章:

excel VBA 基础教程

这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏,打开VBA开发工具录制宏,相当于excel自动写代码(两个表格内容完全一致才可以) 查看宏代码保持含有宏程序的文件xlsm后缀(注意很容易有病毒)宏文件安全设置 使…...

基于异步IO的io_uring

基于异步IO的io_uring 1. io_uring的实现原理 io_uring使用了一种异步IO机制,它通过一对环形缓冲区(ring buffer)实现用户态于内核态之间的高效通信,用户只需将IO请求放入提交队列,当内核完成IO请求时,会将结果放入完成队列&…...

【江协STM32】10-2/3 MPU6050简介、软件I2C读写MPU6050

1. MPU6050简介 MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometer&#xff…...

仓颉笔记——写一个简易的web服务并用浏览器打开

创建一个web服务端,同时创建一个客户端去读取这个服务端。 也满足浏览器打开web的需求。 直接上代码。 import net.http.* import std.time.* import std.sync.* import std.log.LogLevel// 1. 构建 Server 实例 let server ServerBuilder().addr("127.0.0.1&…...

DolphinScheduler自身容错导致的服务器持续崩溃重大问题的排查与解决

01 问题复现 在DolphinScheduler中有如下一个Shell任务: current_timestamp() { date "%Y-%m-%d %H:%M:%S" }TIMESTAMP$(current_timestamp) echo $TIMESTAMP sleep 60 在DolphinScheduler将工作流执行策略设置为并行: 定时周期调度设置…...

ecmascript 标准+ 严格模式与常规模式 + flat-flatMap 应用

文章目录 ecmascript 历程严格模式与常规模式下的区别及注意事项严格模式下的属性删除Array.prototype.flat()和Array.prototype.flatMap() 实例应用 ecmascript 历程 变量声明要求 常规模式: 在常规模式下,使用var关键字声明变量时会出现变量提升现象。…...

基于ILI9341液晶屏+STM32U5单片的显示试验

试验要求: 1、通过串口,下发两个命令 STR和PIC; 2、STR模式: (1)串口输入什么,屏幕上显示什么 (2)如果屏幕满,自动下滚 (3)输入回车&a…...

最短路径算法

关注&#xff1a;算法思路&#xff0c;时间复杂度&#xff0c;适用情况&#xff08;单源/多源&#xff0c;负边权/负边权回路&#xff09; 复习弗雷德算法--基于动态规划--多源--负边权--时间复杂度O(v^3) int的最大值是0x7fffffff #include <iostream> using namesp…...

如何用 ESP32-CAM 做一个实时视频流服务器

文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用&#xff1f;GPIO 0 引脚MicroSD 卡引脚 ESP32-CAM 的烧录方式使用 ESP32-CAM-MB 编程…...

Centos7 解决Maven scope=system依赖jar包没有打包到启动jar包中的问题(OpenCV-4.10)

最近项目中遇到问题,OpenCV的Jar包在程序打包后,找不到相关的类,比如MAT,这个时候怀疑OpenCV_4.10的Jar没有和应用程序一起打包,后面排查到确实是没有打包进去,特此记录,便于日后查阅。 <!-- 加载lib目录下的opencv包 --> <dependency><groupId>org…...

iOS实际开发中使用Alamofire实现多文件上传(以个人相册为例)

引言 在移动应用中&#xff0c;图片上传是一个常见的功能&#xff0c;尤其是在个人中心或社交平台场景中&#xff0c;用户经常需要上传图片到服务器&#xff0c;用以展示个人风采或记录美好瞬间。然而&#xff0c;实现多图片上传的过程中&#xff0c;如何设计高效的上传逻辑并…...

如何将分割的mask转为为分割标签

将分割的mask转换为分割标签通常涉及将每个像素的类别标识&#xff08;在mask中以不同的灰度值或颜色表示&#xff09;转换为整数标签。这些标签通常用于机器学习或深度学习模型的训练、验证和测试阶段。 使用方式&#xff0c;控制台或者命令行使用以下命令&#xff1a; pyth…...

【动手学电机驱动】STM32-MBD(5)Simulink 模型开发之 PWM 输出

STM32-MBD&#xff08;1&#xff09;安装 Simulink STM32 硬件支持包 STM32-MBD&#xff08;2&#xff09;Simulink 模型部署入门 STM32-MBD&#xff08;3&#xff09;Simulink 状态机模型的部署 STM32-MBD&#xff08;4&#xff09;Simulink 状态机实现按键控制 STM32-MBD&…...

MySQL进阶突击系列(05)突击MVCC核心原理 | 左右护法ReadView视图和undoLog版本链强强联合

2024小结&#xff1a;在写作分享上&#xff0c;这里特别感谢CSDN社区提供平台&#xff0c;支持大家持续学习分享交流&#xff0c;共同进步。社区诚意满满的干货&#xff0c;让大家收获满满。 对我而言&#xff0c;珍惜每一篇投稿分享&#xff0c;每一篇内容字数大概6000字左右&…...

vue2日历组件

这个代码可以直接运行&#xff0c;未防止有组件库没安装&#xff0c;将组件库的代码&#xff0c;转成文字了 vue页面 <template><div class"about"><div style"height: 450px; width: 400px"><div style"height: 100%; overflo…...

【PyQt】多行纯文本框

[toc]qt多行纯文本框 QPlainTextEdit QPlainTextEdit 是可以多行的纯文本编辑框 文本浏览框 内置了一个** QTextDocument **类型的对象 &#xff0c;存放文档。 1.信号&#xff1a;文本被修改 当文本框中的内容被键盘编辑&#xff0c;被点击就会发出 textChanged 信号&…...

workerman5.0篇〡异步非阻塞协程HTTP客户端

概述 workerman/http-client 是一个异步http客户端组件。所有请求响应异步非阻塞&#xff0c;内置连接池&#xff0c;消息请求和响应符合PSR7规范。 Workerman 5.0 版本中的异步HTTP协程客户端组件是一个基于PHP协程的高性能HTTP客户端&#xff0c;它能够充分利用PHP的异步特…...

JavaScript 延迟加载的方法( 7种 )

JavaScript脚本的延迟加载&#xff08;也称为懒加载&#xff09;是指在网页的主要内容已经加载并显示给用户之后&#xff0c;再加载或执行额外的JavaScript代码。这样做可以加快页面的初始加载速度&#xff0c;改善用户体验&#xff0c;并减少服务器的压力。 以下是几种常见的延…...

python+pymysql

python操作mysql 一、python操作数据库 1、下载pymysql 库&#xff0c; 方法一&#xff1a;pip3 install pymysql 或pip install pymysql 方法二&#xff1a;在pycharm中setting下载pymysql 2、打开虚拟机上的数据库 3、pymysql连接 dbpymysql.Connection(host&qu…...

基于 Selenium 实现上海大学校园网自动登录

基于 Selenium 实现上海大学校园网自动登录 一、技术方案 核心工具&#xff1a; Selenium&#xff1a;一个用于自动化测试的工具&#xff0c;能够模拟用户在浏览器上的操作。Edge WebDriver&#xff1a;用于控制 Edge 浏览器的驱动程序。 功能设计&#xff1a; 检测网络状…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考

目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候&#xff0c;显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...

FTXUI::Dom 模块

DOM 模块定义了分层的 FTXUI::Element 树&#xff0c;可用于构建复杂的终端界面&#xff0c;支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...