-
VBA-vba与运算符
2018-11-09 19:26:08声明:笔记来源于我要自学网-《Excel VBA基础教程》-授课讲师:曾贤志 定义:运算符是代表VBA某种运算功能的符号... 逻辑运算符:Not(非)、And(与)、Or(或)、Xor(异域)、Eqv(相等)、Imp(隐含) 关系运算符:=(相同)...声明:笔记来源于我要自学网-《Excel VBA基础教程》-授课讲师:曾贤志
定义:运算符是代表VBA某种运算功能的符号
- 赋值运算符:=
- 数学运算符:&(字符连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数)
- 逻辑运算符:Not(非)、And(与)、Or(或)、Xor(异域)、Eqv(相等)、Imp(隐含)
- 关系运算符:=(相同)、<>(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、Like(比较字符串是否相同)
- like用来比较两个字符串
- ?任何单一字符
- * 零个或多个字符
- # 任何一个数字(0-9)
- [charlist] charlist.中的任何单一字符
- [!charlist] 不在charlist中的任何单一字符
实例演示:
Sub a1() a = "admin" Like "Admin" '区分大小写 End Sub
Sub a2() b = "abc" Like "a?c" '通配符运用 b2 = "abc" Like "???" End Sub
Sub a3() c = "Excel函数" Like "*函*" End Sub
Sub a4() d = 88 Like "##" End Sub
Sub a5() e = "a" Like "[a-z]" f = 8 Like "[!1-7]" g = 8 Like "[1-4,6-9]" End Sub
Like运算符运用
Sub aa() For j = 2 To 6 For i = 2 To 14 If Cells(i, "a") Like Cells(j, "e") Then n = n + 1 Next Range("f" & j) = n n = 0 Next End Sub
综合运用(盘点清单核对)
Sub 盘点清单() Dim rng As Range, rngs As Range, k%, a, b For Each rng In [a2:a6] a = rng.Value For Each rngs In [b2:b4] b = rngs.Value If rng = rngs Then GoTo 100 End If Next rngs k = k + 1 Cells(k + 1, "c") = rng 100: Next rng End Sub
-
Excel与VBA简单操作
2019-04-15 17:16:29在最近的工作中遇到很复杂的Excel的处理,仅仅用公式根本无法完成,百度搞了一天多,现在记录一下用到的语法;以防以后忘记,不喜勿喷。 1. Excel和VBA ...当我们完成代码逻辑之后,保存并推出,会发现...在最近的工作中遇到很复杂的Excel的处理,仅仅用公式根本无法完成,百度搞了一天多,现在记录一下用到的语法;以防以后忘记,不喜勿喷。
1. Excel和VBA
1.1 vba如何编写
1、首先打开Excel,右键点击sheet,选择查看代码,可以打开Excel编写代码的页面,语言采用vba语言
2、如下图,为编辑器页面的介绍1.2 代码同文件的保存
当我们完成代码逻辑之后,保存并推出,会发现代码并没有保存,这是因为Excel默认额
.xlsx
格式不允许保存代码;如果想吧代码一起板寸,我们可以将文件另存为启用宏的文件,启用宏的文件后缀有(.xlsm
、.xltm
、.xlam
)1.3 修改该文档格式后引发的保存提示
当我们修改启用宏以后,无论保存代码还是保存文件内容,都会出现很多提示;我们要怎么关闭他们呢???
- 点击
文件 --> 选项
- 进入设置选择
信任中心 -> 信任中心设置
- 取消
保存时从文件属性中删除个人星系
,然后保存。
2. VBA语法
2.1 变量声明及赋值
声明格式为:
Dim 变量名称 As 变量类型
例如:
Dim i As Integer // 声明一个数字变量 Dim str As String // 声明一个字符串变量 i = 3 // 数字赋值 str = "hello world!"// 字符串赋值
VBA数据类型:
数据类型 定义符号 简写 备注 字符串 String $ 整型数字 Integer % -32768~32767 长整型数字 Long & -2147483648~2147483647 单精度浮点型数字 Single ! 精度为6 双精度浮点型数字 Double # 精度为14 日期型 Date yyyy/m/d 布尔型 Boolean 变体型 Variant 万用的类型,尽量避免使用 对象型 Object 没有深究 枚举型 枚举类型数据定义格式:
Public|Private Enum 变量名 成员1[=常数表达式1] 成员1[=常数表达式1] ··· ··· End Enum
例如:
Public Enum WorkDays 星期日 星期一 星期二 星期三 星期四 星期五 星期六 End Enum
2.2 if-else结构
If bool Then // 代码... ElseIf ······ Then // 代码... Else // 代码... End If
2.3 循环结构
// while循环 Do While ······ // 代码... Loop // for循环 For i = 0 To 100 Step 1 // 代码... Exit For // 跳出循环 Next i
2.4 注释
VBA里的单行注释以单引号’标识
3. 常用功能
3.1 获取表格数据
Sheets('sheet名') // 获取表格的sheet对象 Sheets(i) // 获取第i个sheet表格对象 Sheet1.Rows(i) // 获取表格中第i行数据 Sheet1.Columns(j) // 获取表格中第j列数据 Sheet1.Range("a1:b60") // 获取表格中一块数据 Sheet1.UsedRange.Rows.Count // 获取sheet表中已用行数 Sheet1.UsedRange.Columns.Count // 获取sheet表中已用列数 ActiveWorkbook.Worksheets.count // 获取当前Excel的sheet表格的个数 ActiveSheet.Index // 获取当前sheet表的位置
- 点击
-
【VBA研究】VBA数据类型定义与效果
2015-08-07 11:55:27作者:iamlaosong 数据类型是对同一类数据的统称,如文本、日期、数值等。VBA里的数据类型有:字节... VBA对数据类型定义的管控并不强,比如定义成整数型的变量同样可以赋值字符串,但是如果不注意,就会导致逻辑错误。作者:iamlaosong
数据类型是对同一类数据的统称,如文本、日期、数值等。VBA里的数据类型有:字节型(Byte),整数型(Integer),长整数型(Long),单精度浮点型(Single),双精度浮点型(Double),货币型(Currency),小数型(Decimal),字符串型(文本型)(String),日期型(Date),布尔型(Boolean)。 VBA对数据类型的管控并不强,有一个Variant万金油类型,这种类型的变量干啥都行。此外,用Dim定义类型时,存在一个陷井,稍不注意就会掉落其中。
1、测试结果
通过测试发现,如果一条语句定义多个变量,只有最后一个变量有效果,比如下面的程序是不会报错的,也能实现其功能:
Sub tt() Dim ss, a, b, c, d As Integer a = 100 b = 200 c = a + b ss = "sum=" & c Cells(5, 1) = a Cells(5, 2) = b Cells(5, 3) = c Cells(5, 4) = ss a = 87654 b = 12348 c = a + b ss = "sum=" & c Cells(5, 5) = a Cells(5, 6) = b Cells(5, 7) = c Cells(5, 8) = ss End Sub
执行结果是正常的:100 200 300 sum=300 87654 12348 100002 sum=100002 不过,如果定义写成:Dim ss, a, b, c As Integer,则会报“溢出”错误(c是整型)。
同样,如果定义写成:Dim a, b, c, ss As Integer,则会报“类型不匹配”错误(ss是整型)。也就是说,只对定义中最后一个变量进行管控,这一点从C语言转过来的人有点想不通。
2、真实含义
实际上Dim a, b,c,ss As Integer的意思是:
dim a, dim b, dim c, dim ss as integer
变量a、b、c没有类型说明,那么VB就会给你使用默认的类型Variant。
3、严格管控
要严格的进行变量类型管控,一次只能定义一个变量,也可以写成下列形式:
Dim a As Integer, b As Integer, c As Integer, ss As String
===========================
附:VBA中的数据类型
数据类型(名称)
大小(字节)
描述
Boolean
2
逻辑值True或False
Byte
1
0到255的整数
Integer
2
–32,768到32,767的整数
Long
4
–2,147,483,648到2,147,483,647的整数
Single
4
单精度浮点数值
负数:–3.402823E38到–1.401298E–45
正数:1.401298E–45到3.402823E38
Double
8
双精度浮点数值
负数:–1.79769313486231E308到–4.94065645841247E–324
正数:4.94065645841247E–324到1.79769313486231E308
Currency
8
(放大的整数(译者:整数除以10000得到的数值,参见VBA帮助))使用在定点计算中:
–922,337,203,685,477.5808到922,337,203,685,477.5807
Decimal
14
+/–79,228,162,514,264,337,593,543,950,335没有小数点;
+/–7.9228162514264337593543950335小数点后有28位数字;
最小的非0数字是
+/–0.0000000000000000000000000001
Date
8
从100年1月1日到9999年12月31日的日期
String(变长字符串)
10字节+字符串长度
变长字符串最多可包含大约 20 亿 ( 2^31)个字符。
String(定长字符串)
字符串长度
定长字符串最多可包含大约65,400 个字符。
Object
4
对象变量用来引用Excel中的任何对象
Variant(带数字)
16
最高范围到Double类型的任何数值
Variant(带字母)
22字节+字符串长度
和变长字符串的范围一样
用户定义类型
(使用Type)
成员所需的数值
每个成员的范围和它的数据类型的范围一致
-
CATIA VBA二次开发入门与提高
2018-12-25 14:34:52用面向对象技术设计,结构严密、逻辑清晰,是一个开放易学的体系结构。对于刚刚接触 CATIA VBA 二次开发的人来说,既要面临很多个全新的概念,又要掌握 API 中概念与 CATIA数模中元素和操作 的对应关系, 在设计二次... -
Excel VBA的循环与判断
2020-06-16 21:42:37以下代码们都是有业务逻辑的,展示在这里,只是想让自己别忘了一些写法,至于业务逻辑, 各位想必没有兴趣,有兴趣的可以学习 Sub «ö1_Click() Dim i As Integer Dim j As Integer Dim m As Integer Dim n As ...以下代码们都是有业务逻辑的,展示在这里,只是想让自己别忘了一些写法,至于业务逻辑,
各位想必没有兴趣,有兴趣的可以学习Sub «ö1_Click() Dim i As Integer Dim j As Integer Dim m As Integer Dim n As Integer Dim biao_zhi As Boolean Dim yong_liang As Double n = 2 For i = 3 To 10000 If Len(Sheet1.Cells(i, 16).Value) < 2 Then Exit For End If yong_liang = 0 biao_zhi = True For m = 2 To 10000 If Len(Sheet3.Cells(m, 1).Value) < 2 Then Exit For End If If Sheet3.Cells(m, 2) = Sheet1.Cells(i, 2).Value _ And Sheet3.Cells(m, 1).Value = Sheet1.Cells(i, 16).Value Then biao_zhi = False Exit For End If Next m If biao_zhi = True Then For j = 3 To 10000 If Len(Sheet1.Cells(j, 16).Value) < 2 Then Exit For End If If Sheet1.Cells(j, 2).Value = Sheet1.Cells(i, 2).Value _ And Sheet1.Cells(j, 16).Value = Sheet1.Cells(i, 16).Value Then yong_liang = yong_liang + Sheet1.Cells(j, 9).Value End If Next j Sheet3.Cells(n, 1).Value = Sheet1.Cells(i, 16).Value Sheet3.Cells(n, 2).Value = Sheet1.Cells(i, 2).Value Sheet3.Cells(n, 3).Value = yong_liang n = n + 1 End If Next i End Sub Sub «ö2_Click() Dim i As Integer Dim j As Integer Dim m As Integer Dim n As Integer Dim biao_zhi As Boolean Dim yong_liang As Double n = 2 For i = 3 To 10000 If Len(Sheet2.Cells(i, 16).Value) < 2 Then Exit For End If yong_liang = 0 biao_zhi = True For m = 2 To 10000 If Len(Sheet3.Cells(7, 1).Value) < 2 Then Exit For End If If Sheet3.Cells(m, 8) = Sheet2.Cells(i, 2).Value _ And Sheet3.Cells(m, 7).Value = Sheet2.Cells(i, 16).Value Then biao_zhi = False Exit For End If Next m If biao_zhi = True Then For j = 3 To 10000 If Len(Sheet2.Cells(j, 16).Value) < 2 Then Exit For End If If Sheet2.Cells(j, 2).Value = Sheet2.Cells(i, 2).Value _ And Sheet2.Cells(j, 16).Value = Sheet2.Cells(i, 16).Value Then yong_liang = yong_liang + Sheet2.Cells(j, 9).Value End If Next j Sheet3.Cells(n, 7).Value = Sheet2.Cells(i, 16).Value Sheet3.Cells(n, 8).Value = Sheet2.Cells(i, 2).Value Sheet3.Cells(n, 9).Value = yong_liang n = n + 1 End If Next i End Sub Sub «ö3_Click() 'Selection.Value = "Test1" Dim i As Integer Dim j As Integer Dim n As Integer n = 2 For i = 2 To 10000 If Len(Sheet3.Cells(i, 1).Value) < 2 Then Exit For '¦pªG²£«~®Æ¸¹¬°ªÅªº®ÉÔ¡A´N°h¥X´`Àô End If For j = 2 To 10000 If Len(Sheet3.Cells(j, 1).Value) < 2 Then Exit For '¦pªG²£«~®Æ¸¹¬°ªÅªº®ÉÔ¡A´N°h¥X´`Àô End If If Sheet3.Cells(i, 1).Value = Sheet3.Cells(j, 7).Value _ And Sheet3.Cells(i, 2).Value = Sheet3.Cells(j, 8).Value _ And Sheet3.Cells(j, 9).Value - Sheet3.Cells(i, 3).Value <> 0 Then Sheet3.Cells(n, 12).Value = Sheet3.Cells(i, 1).Value Sheet3.Cells(n, 13).Value = Sheet3.Cells(i, 2).Value Sheet3.Cells(n, 14).Value = Sheet3.Cells(i, 3).Value Sheet3.Cells(n, 15).Value = Sheet3.Cells(j, 9).Value n = n + 1 End If Next j Next i End Sub Sub «ö4_Click() 'Selection.Value = "Test2" Dim i As Integer Dim j As Integer Dim n As Integer Dim a As Integer n = 2 For i = 3 To 10000 a = 0 If Len(Sheet3.Cells(i, 1).Value) < 2 Then Exit For '¦pªG²£«~®Æ¸¹¬°ªÅªº®ÉÔ¡A´N°h¥X´`Àô End If For j = 3 To 10000 If Len(Sheet3.Cells(j, 7).Value) < 2 Then Exit For '¦pªG²£«~®Æ¸¹¬°ªÅªº®ÉÔ¡A´N°h¥X´`Àô End If If Sheet3.Cells(i, 1).Value = Sheet3.Cells(j, 7).Value _ And Sheet3.Cells(i, 2).Value = Sheet3.Cells(j, 8).Value Then a = 1 End If Next j If a = 0 Then Sheet3.Cells(n, 18).Value = Sheet3.Cells(i, 1).Value Sheet3.Cells(n, 19).Value = Sheet3.Cells(i, 2).Value Sheet3.Cells(n, 20).Value = Sheet3.Cells(i, 3).Value 'Selection.Value = i n = n + 1 End If Next i End Sub Sub «ö5_Click() 'Selection.Value = "Test2" Dim i As Integer Dim j As Integer Dim n As Integer Dim a As Integer n = 2 For i = 3 To 10000 a = 0 If Len(Sheet3.Cells(i, 7).Value) < 2 Then Exit For '¦pªG²£«~®Æ¸¹¬°ªÅªº®ÉÔ¡A´N°h¥X´`Àô End If For j = 3 To 10000 If Len(Sheet3.Cells(j, 1).Value) < 2 Then Exit For '¦pªG²£«~®Æ¸¹¬°ªÅªº®ÉÔ¡A´N°h¥X´`Àô End If If Sheet3.Cells(i, 7).Value = Sheet3.Cells(j, 1).Value _ And Sheet3.Cells(i, 8).Value = Sheet3.Cells(j, 2).Value Then a = 1 End If Next j If a = 0 Then Sheet3.Cells(n, 23).Value = Sheet3.Cells(i, 7).Value Sheet3.Cells(n, 24).Value = Sheet3.Cells(i, 8).Value Sheet3.Cells(n, 25).Value = Sheet3.Cells(i, 9).Value 'Selection.Value = i n = n + 1 End If Next i End Sub
-
VBA注释
2017-11-23 17:24:14注释是用来记录程序逻辑和用户信息与其他程序员可以在相同的代码无缝协同工作打好基础。 它可包括开发,修改的信息,例如,它也可以包括引入作为逻辑。注释被解释执行时忽略。 在VBA中的注释用两种方法来表示。 1... -
全民一起VBA基础篇第五课:字符串,逻辑运算,调试
2019-12-28 23:17:23调试 设置断点 单击语句左侧,得到一个红色的点 ...与或非的表示是 And Or Not 注意区分 没有括号,先not, and 后or if age<30 and field = “数学” or field=“物理” then 左右两边都要完整 if cells(1,1)... -
模块与VBA编程基础习题
2011-05-30 10:26:00C) 便于插入和删除操作 D) 数据元素的物理顺序与逻辑顺序相同(3) 数据结构中,与所使用的计算机无关的是数据的 A) 存储结构 B) 物理结构 C) 逻辑结构 D) 物理和存储结构(4) 结构化程序设计 -
两个条件一个为false就运行_VBA 实践(3)——查找第一个数据(逻辑变量控制流程)...
2020-11-23 12:17:22VBA 实践(3)——查找第一个数据(逻辑变量控制流程)昨天学习了杨洋老师的《全民一起VBA》提高篇的第6课,对其中所提到的查找第一个数据的例子进行了思考与探索。下面自己找的一份数据,放在了工作簿的sheet3里面。... -
VBA数据类型
2020-05-18 00:50:52布尔数据类型 (–1或0) 使用布尔数值数据类型来存储仅包含两个值的逻辑数据:打开和关闭,true和false,yes和no,等等。 关键字True和False是预定义的常量,可以分别与值–1和0互换。 字节数据类型 (0到255) ... -
excel的宏与VBA入门(三)——流程控制
2018-07-24 14:13:00一、条件控制IF if 逻辑表达式 then 语句块 end if 带else的if语句: If 逻辑表达式1 Then 语句块1 ElseIf 逻辑表达式2 Then ... -
VBA学习(1)数据类型与操作符
2010-05-24 14:25:00VBA中的数据类型有以下几种: 数据类型(名称)大小(字节)描述Boolean2逻辑值True或FalseByte10到255的整数Integer2–32,768到32,767的整数Long -
Excel 2010 VBA 入门 016 定义变量使VBA程序更灵活
2021-03-23 14:45:16在VBA中,可以通过Dim语句定义变量,在程序运行的过程中,定义的变量可以...定长字符串与变长字符串 隐式声明 步骤1 按组合键【Alt+F11】打开VBE。 步骤2 选择菜单“插入”——“模块”,并输入以下代码。 ... -
测试与错误处理(VBA)
2007-11-08 09:40:0010.7 测试与错误处理1.测试 测试代码,检查它是否正确。为确保代码能够正常作用,必须尽力模拟代码运行的不同环境,并检查其正确性。程序中的错误一般分为如下几类:(1)语法错误(如输入时关键字或标点符号拼写错误... -
Excel-VBA-算法挑战-05-整数各位数的积与和之差
2020-11-07 21:29:05本系列参考LeetCode一些题目,将其进行超级简化,用VBA来解 Part 1: 题目 整数各位数的积与和之差 测试示例: 整数为1234,其各个位数的积=1x2x3x4=24,各个位数的和=1+2+3+4=10,两者之差为24-10=14 整数位123... -
Excel_VBA教程
2014-09-22 11:36:34第四节 变量与常量 1 第五节 数组 2 第六节 注释和赋值语句 2 第七节 书写规范 2 第八节 判断语句 2 第九节 循环语句 3 第十节 其他类语句和错误语句处理 4 第十一节 过程和函数 4 一.Sub过程 4 二.Function函数 5... -
VBA常用技巧
2014-12-21 16:39:28技巧182 取得逻辑盘序列号 12 技巧183 使用API取得硬盘信息 12 技巧184 使用数字签名 12 技巧185 暂停代码的运行 12 技巧186 定时关机 12 技巧187 打开指定的网页 12 技巧188 VBE的操作 12 188-1 添加模块和过程 12 ... -
office VBA 语言基础
2008-11-17 09:15:46VBA语言基础 第一节 标识符 一.定义 标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,...5)位运算符 Not(逻辑非)、And(逻辑与)、Or(逻辑或)、Xor(逻辑异或)、Eqv(逻辑等)、Imp(隐含) -
VBA编程,语言基础
2009-05-30 12:18:46VBA语言基础,定义:运算符是代表VB某种运算功能的符号。 1)赋值运算符 = 2)数学运算符 &、+ (字符连接符)...5)位运算符 Not(逻辑非)、And(逻辑与)、Or(逻辑或)、Xor(逻辑异或)、Eqv(逻辑等)、Imp(隐含) -
搜索功能怎么实现_刘相涛:VBA即时搜索功能的设计与实现
2021-01-29 04:16:29点击关注 不迷路作者 l 涛哥来源 l IT云水客授权转载 l itker011001项目背景先看一段视频:...由此涛哥想是否也可以将此逻辑也运用到手中的一个项目?02问题分析首先是看哪些场景可用,如果不合适的场景却硬往上凑... -
VBA编程基础和编程环境(二)
2018-08-03 13:26:10上一节中认识了Excel 宏的基本样子,明白了VBA就是一门类似于C、JAVA、Python等编程语言,了解了VBA与宏的关系,本节开始学习VBA编程的基础知识和编程环境,是整个学习编程的基础。 一、VBA编程的几个重要概念 ... -
Excel VBA 基础教程
2019-01-01 18:51:06变量与常量............................................................................................................................1 第五节 数组........................................................ -
access vba打开excel文件_Access/VBA/Excel之Access记录删除
2020-12-30 00:21:28Part 1:目标删除姓名为张三的这一条记录逻辑过程连接数据库根据需求确定SQL语句执行SQL语句断开与数据库的连接删除记录前Part 2:代码Sub test() Dim cnn As New ADODB.Connection '连接 Dim rs As New ADODB.... -
用VBA完成报表制作
2016-11-24 10:49:39就直接用vba写了逻辑,而没有使用公式,代码实现了一些较简单的功能,例:算总收入,总支出,按月份统计的报销额度,根据财务人员给的公式自动算出管理费等,在这里mark一下,语言不是最重要的,重要的是解决问题的... -
EXECL VBA服装库存管理系统
2010-06-25 12:52:37本人在服装行业,一直想做一个专业的进销存系统,现在通过VBA开发逐步完善业务逻辑,打算ok后用C#做个系统在与大家共享;用c#的目的是方面改换为WEB的和桌面的;欢迎有兴趣的交流QQ:38391393 重点针对服装行业的ERP... -
Excel VBA视频教程20集+PPT课件 完整版
2019-09-26 10:03:45通过"实践在前 理论在后"的全新课程架构,轻轻松松回避所有晦涩的概念,20天熟练应用VBA。 教程目录 01 课程介绍-什么是VBA ... 08 VBA事件与典型应用 09 在VBA中使用公式 10 自定义函数和... -
VBA编程技巧大全
2013-08-05 09:03:19技巧182 取得逻辑盘序列号 442 技巧183 使用API取得硬盘信息 443 技巧184 使用数字签名 444 技巧185 暂停代码的运行 449 技巧186 定时关机 450 技巧187 打开指定的网页 451 技巧188 VBE的操作 452 188-1 添加模块和... -
Excel VBA 高效快速生成家谱世系图
2015-07-17 12:26:361.为简化逻辑,子号与行号相同,且数据已经按世次、家族成员编码排序。 2.家族成员编码包含每个人从始祖到自己的排行信息,请用公式生或VBA生成(表中前3行含公式)。 3.测试数据与族谱表结构完全相同,是一个完全真实... -
报表研究之工具篇-VBA
2014-09-10 11:06:00最近一直在研究VBA,写报表的工作。...2.VBA相对于录制的宏,可以更精确,更聪明,逻辑更清晰,执行也更有效。特别是它的循环和递归,直接解放了人的双手。 3.VBA的基本操作 (1)定位: 基本单位:sheets(页),R... -
Excel中使用VBA中遇到的坑
2018-04-08 22:33:55今天因为工作需要,不得不使用VBA在Excel中对数据进行处理,虽然本人有一些编程的经验和逻辑思维能力,但是因为VBA用得少,所以还是费了很多功夫搜索相关的文档。百度上搜索出来的内容参差不齐,感觉都是只言片语,...