网站首页 > 文章精选 正文
1-1、对象:
1.对象:现实生活所谓的对象,是真实存在物体。
在excel中就指的是:工作簿,工作表,单元格,图表,透视表之类的
2.集合:也是一种特珠的对象,不过没有指特定哪个对象,只是一种统称。如“人”就是一个集合的叫法。
在excel中的集合如:workbooks,worksheets,cells等等
3. 常用代码操作excel中的对象
'1、工作簿(Workbooks)
' Workbooks(N)第N个工作簿
' Workbooks ("工作簿名")
' ActiveWorkbook 活动工作簿
' ThisWorkBook '代码所在工作簿
'2、工作表(Worksheets)
'Sheets(N) 第N个工作表
'Sheets("工作表名")
'SheetN 第N个工作表
'ActiveSheet 活动工作表
'worksheets 与 Sheets的区别
'3、单元格(cells)
'Range ("单元格地址")
'Cells(行号,列号)
'[A1]单元格简写
'Activecell 活动单元格
'Selection 当前被选取的区域
1-2属性
VBA属性:指对象所具有的特性。
人的属性:姓名,年龄,身份证号,住址….
'VBA属性: 指对象所具有的特性?
'人的属性:姓名,年龄,身份证号,住址….
Sub 属性()
Debug.Print Sheet1.Name
Debug.Print Sheet1.Range("a1").Value
End Sub
'VBA对象属性的赋值
Sub 属性赋值()
Sheet2.Name = "改变自己"
Sheet2.Range("a1") = "学习VBA"
End Sub
1-3方法
'方法:实际上就是对对象的操作,它是一种动作,一种行为。
Sub 选择方法()
Range("a1:a10").Select
'注:如果单元格区域前没有写工作表名,则默认为活动工作表
End Sub
Sub 复制方法()
Sheet1.Range("a1:a10") = 1 '将1写入表一的a1:a10区域
Sheet1.Range("a1:a10").Copy Sheet2.Range("a1") '将表一的a1:a10区域的值复制到表2的a1
End Sub
Sub 删除方法()
Sheets(3).Delete
End Sub
1-4常量与变量
'1.常量:常量是定义了之后就不做变化了。
' 常量定义格式:Const 常量名= 常量表达式
Sub 常量()
Const pi = 3.145926
End Sub
'2.变量:在定义之后还能再次赋值
'变量定义格式:Dim 变量 As 变量类型
Sub 变量()
Dim a As Integer
a = 100
End Sub
'3.常量变量应用
'--------------------------------------------------------------------
Sub 应用()
Const pi = 3.1415926
Dim a As Integer
a = 200
Debug.Print pi * a
End Sub
'--------------------------------------------------------------------
'4.注意事项
'A.VBA允许使用未定义的变量,默认是变体变量(Variant)
'B.变量的强制声明:Option Explicit
'5.变量名的命名规则
'以字母开头
'不能用保留字
'不超过 255 个字符。
'同一范围内必须是唯一
1-5变量类型
'1.VBA中的常见数据类型:
' 类型 注释 简写 占用内存
' Integer 整型 % 2Byte
' Single 单精度 ! 4Byte
' Double 双精度 # 8Byte
' Long 长整型 & 4Byte
' String 字符型 $ 定长或变长( 变长字符串最多可包含大约 20 亿 ( 2^31)个字符。 定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符。)
' Currency 货币型 @ 8Byte
'--------------------------------------------------------------------
Sub 数据类型()
Dim a As Integer
Dim b%
End Sub
'--------------------------------------------------------------------
Sub 多数据类型声明()
Dim a As Integer, b As Single, c As String
Dim d%, e!, f$
End Sub
1-6判断语句
1、IF条件判断语句
'VBA中的IF条件判断语句,就像函数中的IF一样
'IF可单条件,也可多条件。
'--------------------------------------------------------------------
Sub IF条件判断之单条件1()
Dim a%, b%
a = 2
b = 2
If a = b Then MsgBox "相等"
End Sub
'--------------------------------------------------------------------
Sub IF条件判断之单条件2()
Dim a%, b%
a = 2
b = 2
If a = b Then
MsgBox "相等"
End If
End Sub
'--------------------------------------------------------------------
Sub IF条件判断之单条件3()
Dim a%, b%
a = 2
b = 2
If a = b Then
MsgBox "相等"
Else
MsgBox "不相等"
End If
End Sub
'--------------------------------------------------------------------
Sub IF条件判断之多条件等级划分()
If Sheet1.Range("b1") >= 90 Then
Sheet1.Range("b2") = "优秀"
ElseIf Sheet1.Range("b1") >= 80 Then
Sheet1.Range("b2") = "良好"
ElseIf Sheet1.Range("b1") >= 70 Then
Sheet1.Range("b2") = "中等"
ElseIf Sheet1.Range("b1") >= 60 Then
Sheet1.Range("b2") = "一般"
Else
Sheet1.Range("b2") = "较差"
End If
End Sub
'--------------------------------------------------------------------
'VBA中的IIF函数与工作表函数(IF)的语法结一致
Sub IIF函数应用()
Cells(2, 3) = IIf(Cells(1, 2) > 80, "优秀", "不优秀")
End Sub
2、判断语句之Select
'Select Case 语句 根据表达式的值,来决定执行几组语句中的其中之一。
'--------------------------------------------------------------------
Sub select单条件判断()
i = 1
Select Case i
Case Is > 0
MsgBox "正数"
Case Else
MsgBox "负数"
End Select
End Sub
'--------------------------------------------------------------------
Sub select多条件判断()
Select Case Sheet1.[d1].Value
Case "A"
Sheet1.[a3] = "A型血的你,是个不怎么样的人!"
Case "B"
Sheet1.[a3] = "B型血的你,也是个不怎么样的人~"
Case "AB"
Sheet1.[a3] = "AB型血的你,是个更不怎么样的人~"
Case "O"
Sheet1.[a3] = "O型血的你,还是不错的!"
Case Else
Sheet1.[a3] = "没有这种型血,看来你 是个最不怎么样的人~!"
End Select
End Sub
'--------------------------------------------------------------------
1-7循环语句
1、循环语句之DO LOOP
'--------------------------------------------------------------------
Sub 基本示例()
Dim rs%
rs = 1
Do
rs = rs + 1
If rs > 10 Then
Exit Sub
Else
If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
End If
Loop
End Sub
'--------------------------------------------------------------------
2、循环语句之DO WHILE LOOP
'--------------------------------------------------------------------
Sub 循环语句while()
Dim rs As Integer
rs = 2
Do While Cells(rs, 2) <> "" '当单元格不等于空时,则循环
If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
rs = rs + 1
Loop '循环
End Sub
'--------------------------------------------------------------------
3、 循环语句之DO UNTIL LOOP
'do until...loop
'--------------------------------------------------------------------
Sub 循环语句DOLOOP2()
Dim rs As Integer
rs = 2
Do Until Cells(rs, 2) = "" '直到单元格为空为止,才结束
If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
rs = rs + 1
Loop '循环
End Sub
'实例-隔行填色
'--------------------------------------------------------------------
Sub 隔行填色()
Dim rs As Integer
rs = 2
Do Until Sheet2.Range("a" & rs) = ""
Sheet2.Range("a" & rs & ":g" & rs).Interior.ColorIndex = 7
rs = rs + 2
Loop
End Sub
'--------------------------------------------------------------------
4、 循环语句之WHILE与UNTIL位置变化
'---------------------------------------------------------------
'while与until不但可以放在DO后面,也可以放在LOOP后面
'事实上有时在循环的最后一行进行判断,更具有意义
'---------------------------------------------------------------
Sub doloop的最后判断循环()
Dim pss$, i!
Do
i = i + 1
If i > 3 Then Exit Do
pss = InputBox("请输入密码")
Loop While pss = "123"
End Sub
5、循环语句之FOR EACH NEXT
'当需要处理集合成员时,一般会用for each..next,实际上就是处理对象
'---------------------------------------------------------------
Sub foreachnext循环1()
Dim rng As Range, n!
For Each rng In Sheet1.Range("a2:a10") '取a2:a10中的每个单元格
If rng = "A1" Then rng.Interior.ColorIndex = 3
Next
End Sub
'---------------------------------------------------------------
Sub foreachnext循环2()
Dim wsh As Worksheet, n As Byte, m As String
For Each wsh In Worksheets '取当前工作表集合中的每个成员
n = n + 1
Sheet1.Cells(n, 3) = wsh.Name
Next
End Sub
6、循环语句之FOR NEXT
'FOR...NEXT也是循环语句,与之前的DO...LOOP不同之处在于,for next有一个内置计数器
'---------------------------------------------------------------
Sub fornext循环2()
Dim i!, j!
For i = 100 To 1 Step -2
j = j + i
Next
MsgBox j
End Sub
'---------------------------------------------------------------
Sub fornext循环()
Dim rng!
For rng = 2 To 16
Sheet1.Cells(rng, 4) = Sheet1.Cells(rng, 2) * Sheet1.Cells(rng, 3)
Next
End Sub
'---------------------------------------------------------------
Sub 九九乘法表制作()
Dim a!, b!
For a = 1 To 9
For b = 1 To 9
If b > a Then
Sheet2.Cells(a, b) = ""
Else
Sheet2.Cells(a, b) = a & "×" & b & "=" & a * b
End If
Next
Next
End Sub
1-8 exit与end
'exit是退出当前语句
'1.Exit Do
'2.Exit For
'3.Exit Function
'4.Exit Sub
Sub exitfor退出()
Dim i!
For i = 2 To 7
If Sheet1.Cells(i, 1) = "田七" Then
Exit For
End If
Next i
MsgBox "第一个(田七)的位置在" & i & "行"
End Sub
'---------------------------------------------------------------
'end结束一个过程或块。
'End
'End Function
'End If
'End Select
'End Sub
Sub aa()
i = 1
End
Exit Sub
j = 1
End Sub
'---------------------------------------------------------------
1-9 跳转语句
'GoTo line无条件地转移到过程中指定的行。
'注意 太多的 GoTo 语句,会使程序代码不容易阅读及调试。
'尽可能使用结构化控制语句(Do...Loop、For...Next、If...Then...Else、Select Case)。
Sub gotoline()
Dim str$
line:
str = InputBox("请录入用户名!")
If str <> "admin" Then GoTo line
End Sub
'---------------------------------------------------------------
'go to...return
Sub gotoreturn()
Dim i!
For i = 2 To 10
If Sheet1.Range("a" & i) > 1 / 3 Then GoSub 100
Next i
Exit Sub
100:
Sheet1.Range("b" & i) = "迟到"
Return
End Sub
'---------------------------------------------------------------
1-10错误分支语句
Sub onerrorresume()
Dim i!
On Error Resume Next '当错误的时候继续执行下去
For i = 2 To 8
Cells(i, 4) = Cells(i, 3) + Cells(i, 2)
Next i
End Sub
'---------------------------------------------------------------
'On Error GoTo当错误的时候去哪儿?
Sub onerrorgoto()
On Error GoTo 100
For i = 2 To 8
k = Sheet1.Cells(i, 2) + Sheet1.Cells(i, 3)
Next i
100:
MsgBox "对不起,错误发生在第" & i & "行"
End Sub
'---------------------------------------------------------------
1-11 with语句
'with 语句 ,当对某个对象执行一系列的语句时,不用重复指出对象的名称。
Sub with语句1()
a = Range("a1").Address
b = Range("a1").Parent.Name
Range("a1") = "1234"
End Sub
'---------------------------------------------------------------
Sub with语句2()
With Range("a1")
a = .Address
b = .Parent.Name
.Value = "1234"
End With
End Sub
'---------------------------------------------------------------
Sub with嵌套1()
Range("a1").Value = "Who am i ?"
Range("a1").Parent.Name = "Hello World"
Range("a1").Font.Size = 20
Range("a1").Font.Bold = True
End Sub
'---------------------------------------------------------------
Sub with嵌套2()
With Range("a1")
.Value = "Who am i ?"
.Parent.Name = "Hello World"
With .Font
.Size = 20
.Bold = True
End With
End With
End Sub
1-12 函数
'---------------------------------------------------------------
Sub 带工作表函数的计算()
Dim i As Integer
For i = 1 To 10
Sheet1.Cells(i, 4) = "=sum(a" & i & ":b" & i & ")"
Next i
End Sub
'---------------------------------------------------------------
Sub 公式带引号的计算()
Cells(12, 1) = "=COUNTIF(A1:A10,"">9"")"
Cells(12, 2) = "=sum(INDIRECT(""a1:a10""))"
End Sub
'---------------------------------------------------------------
'借用工作表函数
Sub 运用工作表函数()
MsgBox
Application.WorksheetFunction.CountIf(range("a1:a10"), "钢笔")
MsgBox WorksheetFunction.CountIf(range("a1:a10"), "钢笔")
MsgBox Application.CountIf(range("a1:a10"), "钢笔")
End Sub
'---------------------------------------------------------------
'VBA函数
Sub VBA函数()
MsgBox VBA.Format(range("b1"), "yyyy年m月d日")
MsgBox Format(range("b1"), "yyyy年m月d日")
End Sub
'---------------------------------------------------------------
'自定义函数
Function SEX(rng As range)
SEX = IIf(Mid(rng, 15, 3) Mod 2, "男", "女")
End Function
'---------------------------------------------------------------
1-13运算符
'定义: 运算符是代表VBA某种运算功能的符号?
'1)赋值运算符 :=
'2)数学运算符: &(字符连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数)
'3)逻辑运算符:Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)
'4)关系运算符: = (相同)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、Like
'---------------------------------------------------------------
Sub mods()
a = 4 ^ 2
MsgBox a
End Sub
'---------------------------------------------------------------
'like用来比较两个字符串。
Sub likess()
a = 1 Like "[!2]"
MsgBox a
End Sub
'---------------------------------------------------------------
'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
'---------------------------------------------------------------
- 上一篇: c语言:数据类型与表达式2
- 下一篇: 200Smart数据类型概括
猜你喜欢
- 2025-05-16 Java 里的基本类型和引用类型
- 2025-05-16 新手小白学Java|零基础入门笔记|原来学Java可以这么简单
- 2025-05-16 深度学习CV方向高频算法面试题6道|含解析
- 2025-05-16 C语言结构体成员变量名后加冒号和数字的含义
- 2025-05-16 C语言之核心语法
- 2025-05-16 CSP初赛冲刺 计算机体系基本结构
- 2025-05-16 Go语言基础—整型
- 2025-05-16 java基本数据类型
- 2025-05-16 深入探索C语言数据类型:整型、浮点型、字符型全解析!
- 2025-05-16 mysql索引
- 05-16一文学完《图解HTTP》
- 05-16您未被授权查看该页
- 05-16快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别
- 05-16一张图带你了解HTTP 9个请求方法,收藏!
- 05-16Java 里的基本类型和引用类型
- 05-16新手小白学Java|零基础入门笔记|原来学Java可以这么简单
- 05-16深度学习CV方向高频算法面试题6道|含解析
- 05-16C语言结构体成员变量名后加冒号和数字的含义
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)