VBA(学习笔记)

news2024/9/27 23:34:00

1. 数据类型

变量定义:Dim 变量名 As 数据类型

变量赋值:变量名 = 值

1.1 数值型

1.1.1 整数

(1) Byte1字节(0~255)

(2) Integer2字节(-32768~32767)

(3) Long4字节(-2147483648~2147483647)

1.1.2 小数

(1) Single7位有效整数加小数 // 整数为0可含7位小数,第8位四舍五入

(2) Double15位有效整数加小数 // 第16位四舍五入

1.2 字符型

(1) String // 变量名 = "abc"

1.3 日期型

(1) Date // Dim d As Date     // d = Date  系统日期, d = Time 系统时间

1.4 数组

(1) 一维数组:Dim 数组名(开始下标含 To 终止下标含) As 数据类型 // Dim arr(1 To 5) As Byte

(2) 二位数组:Dim 数组名(下标 To 下标, 下标 To 下标) As 数据类型 // Dim arr(0 To 3, 0 To 2) As ..

(3) 动态数组:Dim 数组名() As 数据类型  // ReDim 数组名(下标 To 变量)

注释:数组赋值  数组(下标)=值,数组取值  数组(下标),开始下标随意指定可以是0也可是1

2. 运算符

(1) 算术运算符:加( + ),减( - ),乘( * ),除( / ),余( Mod ) // 5 Mod 2

(2) 赋值运算符:=  // vba不识别 += 运算

(3) 比较运算符:等( = ),不等( <> ),大于( > ),大等( >= ),小于( < ),小等( <= )

注释:Like // 变量 like "abc"  ("a*" 多字符,"a?"单字符,"a#"单数字),Is // Range("A1") Is Range("B1") 

(4) 逻辑运算符:AndOrNot

3. 流程控制

3.1 分歧

(1) If分歧:If 条件 Then ... [ElseIf 条件 Then ...] [Else ...] End If

(2) Select分歧:Select Case 变量  Case 变量 = 值 ... [...] Case Else ... End Select

 

3.2 循环

(1) for 循环:For 变量 = 初值 To 终值 ... Next 变量 // For i = 0 To 5 ... Next i

(2) for each 循环:For Each 变量 In 区域 ... Next // For Each i in Range("A1:B2") ... Next

(3) while 循环:Do While 条件 ... 变量=变量+1 Loop // 先判断后循环

(4) do while 循环:Do ... 变量=变量+1 Loop While 条件 // 先处理后判断

注释:退出循环 Exit For, Exit Do 

4. 函数

注释:内置函数用 (vba.函数名)

4.1 函数

4.1.1 判断函数

(1) 数值判断:VBA.IsNumeric(变量 // 判断变量内容是否为数值,可判断字符串

(2) 判断初始化:VBA.IsEmpty(变量 // 判断变量是否初始化(Dim定义或赋值都为False)

(3) 判断空变量:VBA.IsNull(变量) //  判断变量的值是否为Null

4.1.2 数值函数

4.1.3 字符函数

(1) 字符串拼接(+):"a"+"b"="ab" // 符号两侧与变量用空格分割,1+1=2,"1"+1=2,1+"1"=2,"1"+"1"=2

(2) 字符串拼接(&):"a"+"b"="ab" 推荐使用 // 符号两侧与变量用空格分割,1+1="11","1"+1="11",1+"1"="11","1"+"1"="11"

(3) 取字符长度:Len(变量 // 获取字符长度 Len("a啊") = 2

(4) 截取字符:Left(变量, 长度) | Right(变量, 长度 // 从一侧获取指定长度的字符串 

4.1.4 日期函数

(1) 系统日期:Date  //  "2024/3/9",Date + 1 = 加1天,

(2) 系统时间:Time // "23:48:32"

(3) 系统日期时间:Now // "2024/3/9 23:48:32",Now + 1 = 加1天,

4.1.5 函数定义与调用

(1) 无返回值函数:Sub 函数名([ByVal a As 类型, ...]) ... End Sub // 参数(ByVal a As String)

(2) Sub调用:Call 函数名([参数])

(3) 有返回值函数:Function 函数名([ByVal a As 类型]) As 返回值类型 ... End Function  

(4) Function调用:变量函数名([参数]) // 无参函数  函数名 或 函数名() 都识别

注释:function 返回值设定,函数名同名变量=值

4.2 正则表达式

Dim reg as Object
set reg = CreateObject("VBScript.RegExp")
with reg
  .Global=True '全部匹配
  .ignorecase = True '不区分大小写
  .Pattern = "正则"
  set mc = .Execute("匹配源文本")
  xx=mc(0) '取第一个匹配结果
  for each item in mc '多结果获取
    '…
  next item
end with

 

5. 宏录制

简单操作可通过录制宏完成 

点击【录制宏】,执行拖动,光标移动,复制粘贴等操作,【结束录制 】。

注释:ctrl+上下做有内容的光标移动,当上下左右移动光标时,需打开【使用相对引用】使相对于当前光标做上下左右,而不是直接跳转到指定单元格。

点击【宏】,选取好光标位置后,执行宏命令。

6. 文件

脚本打开本地excel文件

Sub test()

Dim OpenFilename As String
OpenFilename = Application.GetOpenFilename("MicrosoftExcelbook, *.xlsx")
If OpenFilename <> "False" Then
  On Error Resume Next
  Workbooks.Open OpenFilename
  On Error GoTo 0
End If

End Sub

7. 工作簿

工作簿 》 工作表 》多单元格(行,列,区域)》 单元格

7.1 工作簿

7.1.1 工作簿操作

(1) 选中工作簿:Workbooks("xx.xlsx").Worksheets("xx").Range("A1") //指定工作簿区域取值赋值

(2) 保存工作簿:ActiveWorkbook.Save // If Not ActiveWorkbook.Saved Then ActiveWorkbook.Save End If

7.1.2 工作簿事件

打开工作簿(Open),添加工作表(NewSheet),删除工作表(SheetBeforeDelete),选取工作表(SheetActivate),内容输入(BeforePrint),双击工作表(SheetBeforeDoubleClick),右击工作表(SheetBeforeRightClick),保存(BeforeSave),关闭(BeforeClose)

7.2 工作表

注释:默认当前工作簿,也可指定工作簿 Workbooks("xx.xlsx").

7.2.1 工作表操作

(1) 选中工作表:Worksheets("sheet名" | 1开始下标).Select 

(2) 添加工作表:Worksheets.add // 添加到开头

7.2.2 工作表事件

删除工作表(BeforeDelete)选取工作表(Activate),双击工作表(BeforeDoubleClick),右击工作表(BeforeRightClick),单元格变更(Change),选择区域变化(SelectionChange)

7.3 单元格

注释:默认当前工作表,也可指定工作表 Worksheets("名").

7.3.1 区域单元格

(1) 连续区域选中:Range("A1:C3").Select // 选中A1到C3所有单元格

(2) 间断区域选中:Range("A1,C3").Select // 选中A1与C3单元格,Range("A1").Select 单选

(3) 光标移动:Range("A1").End(xlUp).Select // xlUp 最上(ctrl+↑),xlDown 最下,xlToLeft 最左,xlRight 最右

(4) 区域光标偏移:Range("C1:D2").Offset(1, 1).Select // 向下向左偏移,负数向上向右

7.3.2 行

(1) 全工作表行选中:Rows.Select

(2) 多行选中:Rows("3:5").Select // 选中第3行到第5行

(3) 单行选中:Rows(2).Select  // 指定行号。Rows("3:4").Rows(1).Select 选中多行中的第几行

(4) 获取行号:Rows(Rows.Count).End(xlUp).Row // 首列由下到上,第一个有值单元格行号

(5) 删除行:Rows(3).delete // 下边行上移

7.3.3 列

(1) 全工作表列选中:Columns.Select

(2) 多列选中:Columns("D:F").Select // 选中D列到F列

(3) 单列选中:Columns("D" | 2).Select // 指定列名 或 列号选中

(4) 获取列号:Columns(Columns.Count).End(xlToLeft).Column // 获取数值

(5) 删除列: Columns(3).delete // 右边列左移

7.3.4 单元格

(1) 选中单元格:Cells(行数, 列数).Select // Cells(1,1).Select 选中1行1列

(2) 选中单元格:Cells(行数, "列字母").Select // Cells(1, "B").Select 选中1行B列

(3) 选中单元格:[B2].Select  // 选中指定名字的单元格 

(4) 获取行号或列号:Cells(1,1).Row  | Cells(1,1).Column

7.3.5 通用操作

对象:Range,Rows,Columns,Cells

(1) 单元格赋值:对象.Value =  // 直接单元格的值,光标不变

(2) 自动调整行高:对象.EntireRow.AutoFit

(3) 自动调整列宽:对象.EntireColumn.AutoFit 

7.3.6 单元格样式

对象:Range,Rows,Columns,Cells

(1) 获取对象:Set 变量 = Range("A2:D3") | Rows(1) | Columns(1) | Cells(1,1)

(2) 合并单元格:变量 .Merge

(3) 对齐:变量 .HorizontalAlignment = xlCenter // 居中,xlLeft, xlRight

(3) 字号:变量 .Font.size =

(5) 字体颜色:变量 .Font.ColorIndex = 1 // 黑色(1)

(6) 字体加粗:变量 .Font.Blod = True

(7) 背景色:变量 .Interior.ColorIndex = 1 // 黑色(1)

(8) 边框:变量.Borders.LineStyle = True 

8. 窗体

8.1 窗体

(1) 显示窗体:窗口名.Show 

8.2 控件

8.2.1 标签(Label)

(1) 标签文本:Label名.Caption = "文本内容"

(2) 标签显示:Label名.Visible = True // True显示, False不显示

(3) 指向提示:Label名.ControlTipText

注释:背景色(BackColor),字体(Font),字体颜色(ForeColor) ...

事件:ClickDblClickMouseDownMouseUpMouseMove 

8.2.2 文本框(TextBox)

(1) 文本框内容:TextBox名.Value = "内容"  | TextBox名.Text = "内容"

(2) 文本框显示:TextBox名.Visible = True

(3) 文本框活性:TextBox名.Enabled = True // True 可入力,False不可入力

注释:背景色(BackColor),字体(Font),字体颜色(ForeColor) ...

事件:ChangeDblClickMouseDownMouseUpMouseMove,KeyDown,KeyUp,KeyPress

8.2.3 下拉框(ComboBox)

(1) 文本框取值:ComboBox名.Value  // 获取当前选择的值

(2) 文本框添加项目:ComboBox名.AddItem

(3) 清空文本框:ComboBox名.Clear

注释:显示(Visible),活性(Enabled),字体(Font),字体颜色(ForeColor) ...

事件:ChangeClickDblClickMouseDownMouseUpMouseMove,KeyDown,KeyUp,KeyPress

8.2.4  列表框(ListBox)

(1) 列表框取值:ListBox名.Value  // 获取当前选择的值

(2) 列表框添加项目:ListBox名.AddItem

(3) 获取选中状态:ListBox名.Selected(0开始下标) // True选中,False未选中,赋值改变状态

(4) 获取总件数:ListBox名.ListCount

(5) 清空列表框:ListBox名.Clear

注释:显示(Visible),活性(Enabled),字体(Font),字体颜色(ForeColor) ... 

事件:ChangeClickDblClickMouseDownMouseUpMouseMove,KeyDown,KeyUp,KeyPress

8.2.5 复选框(CheckBox)

分组名:GroupName相同为一组

(1) 列表框取值:CheckBox名.Value  // 获取当前复选框是否选中

(2) 列表框赋值:CheckBox​​​​​​​​​​​​​​名.Value  = True // True选中,False未选中

(3) 文本信息:CheckBox​​​​​​​​​​​​​​名.Caption 

注释:显示(Visible),活性(Enabled),字体(Font),字体颜色(ForeColor) ... 

事件:ChangeClickDblClickMouseDownMouseUpMouseMove,KeyDown,KeyUp,KeyPress

8.2.6 单选框(OptionButton)

分组名:GroupName相同为一组 

(1) 列表框取值:OptionButton​​​​​​​名.Value  // 获取当前复选框是否选中

(2) 列表框赋值:OptionButton​​​​​​​​​​​​​​名.Value  = True // True选中,False未选中

(3) 文本信息:OptionButton​​​​​​​​​​​​​​名.Caption  

注释:显示(Visible),活性(Enabled),字体(Font),字体颜色(ForeColor) ... 

事件:ChangeClickDblClickMouseDownMouseUpMouseMove,KeyDown,KeyUp,KeyPress

8.2.7 按钮(CommandButton)

(1) 按钮显示名:CommandButton​​​​​​​​​​​​​​名.Caption  

注释:显示(Visible),活性(Enabled),字体(Font),字体颜色(ForeColor) ... 

事件:ChangeClickDblClickMouseDownMouseUpMouseMove,KeyDown,KeyUp,KeyPress

8.2.8 框架(Frame)

(1) 框架标题:Frame.Caption  

注释:显示(Visible),活性(Enabled),字体(Font),字体颜色(ForeColor) ... 

8.2.9 其它

(1) 图片:Image

(2) 多页:Page  // 多个Tag页

9. 开发环境

调出菜单:打开Excel > 文件 > 选项 > 自定义功能区 > 勾选右侧【开发工具】选项 

开发工具:Excel菜单栏 > 开发工具 >  点击【Visual Basic】

注释:'注释内容   // 单引号后为注释内容

控制台输出:Debug.Print log内容  // ctrl+G或窗口(i)打开 控制台

弹窗信息:MsgBox "弹窗信息"

输入窗口:变量 = InputBox("提示信息", "窗口标题", "入力默认值", 显示器x坐标, 显示器y坐标)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1507015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu18.04下zookeeper安装与简单使用

下载与解压 官网下载地址 Apache ZooKeeper 解压 tar -zxvf zookeeper-3.4.10.tar.gz 环境准备 zookeeper基于java开发&#xff0c;因此首先需要安装java的jdk包 sudo apt-get install openjdk-8-jdk修改配置 进入解压目录里的conf文件夹内 mv zoo_sample.cfg zoo.cfg …

表单进阶(6)-字段集

带框的字段集用fieldse &#xff0c;字段集标头用legent 选中的样式&#xff1a; 圆点用radio&#xff0c;方框用checkbox <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" cont…

Qt QListwidget与QStackedWidget或QTableWidget实现多界面切换的效果

文章目录 效果图使用QStackedWidget实现使用QTableWidget实现总结 效果图 使用QStackedWidget实现 QStackedWidget提供了一种堆栈式的界面布局方式。功能&#xff1a;QStackedWidget允许开发者在一个固定区域内显示多个子窗口或页面&#xff0c;但同时只显示其中一个子窗口&am…

腾讯云轻量服务器流量用完了怎么办?还能继续用吗?

腾讯云轻量服务器流量用完了怎么办&#xff1f;超额部分的流量另外支付流量费&#xff0c;流量价格为0.8元/GB&#xff0c;会自动扣你的腾讯云余额&#xff0c;如果你的腾讯云账号余额不足&#xff0c;那么你的轻量应用服务器会面临停机&#xff0c;停机后外网无法访问&#xf…

【大厂AI课学习笔记NO.75】人工智能产业的就业岗位分布

见上图&#xff0c;这是详细的人工智能产业的就业岗位分布情况。 就业领域包括物联网、智能芯片、机器学习、深度学习、计算机视觉CV、自然语言处理NLP、智慧语音、机器人、知识图谱等领域。 人工智能作为当今科技革命与产业变革的重要驱动力量&#xff0c;其就业岗位分布广泛…

什么是Python网络爬虫

Python网络爬虫是一种自动化获取网页内容的程序。它可以通过发送HTTP请求&#xff0c;获取网页的HTML代码&#xff0c;并从中提取所需的数据。下面是一个简单的概述&#xff0c;帮助您理解Python网络爬虫的基本原理。 导入所需的库&#xff1a; 在Python中&#xff0c;我们可以…

系统架构设计师精讲班视频教程

本课程将深入探讨系统架构设计原理及实际应用。学员将学习高可用性、扩展性和安全性等方面的设计技巧&#xff0c;掌握微服务架构、云计算和容器化等最新趋势。通过案例分析和项目实践&#xff0c;帮助学员成为系统架构设计领域的专家。 课程大小&#xff1a;7G 课程下载&…

20240310-1-Java后端开发知识体系

Java 基础 知识体系 Questions 1. HashMap 1.8与1.7的区别 1.71.8底层结构数组链表数组链表/红黑树插入方式头插法尾插法计算hash值4次位运算5次异或运算1次位运算1次异或运算扩容、插入先扩容再插入先插入再扩容扩容后位置计算重新hash原位置或原位置旧容量 (1) 扩容因子…

SpringMVC09、Ajax

9、Ajax 9.1、简介 AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。 Ajax 不是一种新的编程语言&#xff0c;而是一种用于创建更好更快以及交互…

第十五届蓝桥杯模拟考试III_物联网设计与开发

编程题 一、基本要求 使用大赛组委会提供的四梯/国信长天物联网省赛套装&#xff08;基于STM32L071KBU微控制器设计&#xff09;&#xff0c;完成本试题的程序设计与调试。程序编写、调试完成后&#xff0c;选手需提交两个LoRa终端对应的hex文件&#xff0c;LoRa终端A对应的文…

解决轻松解决谷歌浏览器火狐浏览器主页被360导航篡改问题浏览器启动页被篡改为360导航栏等

重置Chrome浏览器设置 尝试重置chrome浏览器全部设置。进入Chrome设置页&#xff0c;点击最下方的“高级设置”。 将鼠标滚到最底部&#xff0c;点击“重置设置” 然后关闭浏览器&#xff0c;重新打开即可。 包括ie几乎所有浏览器都可以重置... 重置火狐浏览器设置 设置——主…

VUE+HBuilder的uniapp技术路线开发应用使用总结

使用总结 本来想做一个记录日常数据的应用&#xff0c;主要在Android端使用&#xff0c;后来发现在uniapp中使用sqllite数据库不是像原生中那样简单(所以当前准备去进行另一个路线&#xff0c;就是给我使用的电脑都安装一个portalble的服务端&#xff0c;用来记录数据&#xf…

linux环境下线程的介绍和POSIX线程接口应用实例

目录 概述 1 线程概念 1.1 线程的特性 1.2 线程的运行状态 2 线程API 2.1 pthread的数据类型 2.2 pthread函数的返回值 2.3 POSIX线程接口 2.3.1 创建线程函数pthread_create 2.3.2 终止线程 2.3.3 线程ID 2.3.4 连接已终止线程 2.3.5 线程分离 3 线程VS进程 4 线…

电子电器架构 —— 车载网关路由表和刷写场景

电子电器架构 —— 车载网关路由表和刷写场景 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 PS:小细节,本文字数5000+,详细描述了网关在车载框架中的具体性能设置。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有…

leetcode 热题 100_搜索二维矩阵

题解一&#xff1a; 二叉搜索树&#xff1a;从矩阵右上角观察&#xff0c;结构类似二叉搜索树&#xff0c;因此可以用类似的解法来做。具体做法是双指针从右上角开始&#xff0c;向左下角逐步搜索&#xff0c;如果当前值比目标值大&#xff0c;则向下移动&#xff0c;如果当前值…

MQ高可用相关设置

文章目录 前言MQ如何保证消息不丢失RabbitMQRocketMQKafkaMQ MQ如何保证顺序消息RabbitMQRocketMQKafka MQ刷盘机制/集群同步RabbitMQRocketMQKafka 广播消息&集群消息RabbitMQRocketMQ MQ集群架构RabbitMQRocketMQKafka 消息重试RabbitMQRockeMqKafka 死信队列RocketMQKaf…

Linux网络套接字之TCP网络程序

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、接口介绍 1.socket 2.listen 3.accept…

conda 设置国内源 windows+linux

默认的conda源连接不好&#xff0c;时好时坏&#xff0c;而且速度很慢&#xff0c;可以使用国内的源 如果没有安装conda&#xff0c;可以参考&#xff1a; miniconda安装&#xff1a;链接 anaconda安装winlinux&#xff1a;链接 windows使用命令提示符&#xff0c;linux使用…

后端八股笔记------Redis

Redis八股 上两种都有可能导致脏数据 所以使用两次删除缓存的技术&#xff0c;延时是因为数据库有主从问题需要更新&#xff0c;无法达到完全的强一致性&#xff0c;只能达到控制一致性。 一般放入缓存中的数据都是读多写少的数据 业务逻辑代码&#x1f447; 写锁&#x1f4…

Linux网络基础2之https

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ http是明文的可以通过一些的工具获取到正文层&#…