VB学习笔记
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A = Int((10 * Rnd) + 1)
B = Int((10 * Rnd) + 1)
C = A + B
Debug.Print A; B; C
Sub Test1()
Dim SearchString, SearchChar, MyPos
SearchString = "xxxxpxxxx"
Columns.Select 选取全部列
Rows.Select 选取全部行
a=Char(i) 把数值i转换成大写A~E的字符
单元格区域之间的复制
复制语法
表达式.Copy(Destination)
粘贴语法
表达式.Paste(Destination,Link)
单元格的删除和清除
If then
单行结构格式
区块结构格式
If 条件 then
语句行
End If
多条件判断
If 条件1 Then
语句行1
Elseif 条件2 Then
语句行2
Elseif 条件3 Then
语句行3
...
Else
语句行 n
EndIf
Select Case
.属性值2=属性值
End with
MsgBox 消息对话框
MsgBox()
例:MsgBox Range("A" & X) & "是" & mst
MsgBox "完成,共用:" & Format(Timer - str, "0.00") & "秒"
Inputbox(提示信息,[标题],[默认值],[xpos],[ypos])
宏定义 能够自动完成某个任务的一组指令的集合
录制宏
宏的保存位置:当前工作簿,新工作簿 个人宏工作簿
加载宏
数字签名
使用相对引用录制宏
录制宏的局限性:不具备判断,循环
VBA Visual Basic For Application
VBA与VB都基于同一种语言 即Basic
VBA与VB的区别:
ISERROR() 检查一个值是否为错误(#N/A,) 返回true或false
使用 CStr 函数将数字值转换为 String
TEXT() 将指定的数值格式转换成文本
COUNTIF的用法:
在存放统计结果的单元格中输入:=COUNTIF(要统计的单元格区域,判断条件表达式)
例:如果要统计C3:C33单元格区域中,大于80的单元格个数,结果存放在C34单元格中,则在C34单元格中输入:=COUNTIF(C3:C33,">80")
SearchChar = "p"
MyPos = InStr(1, SearchString, SearchChar, vbBinaryCompare)
Debug.Print MyPos
End Sub
Sub test2()
s = DateDiff("d", #1/19/2013#, Now)
For i = 2 To m
A = Range("A" & i).Value
单元格的引用:
A1样式 例如:Range("A1")
Cells样式 Cells(行号,列号) 例如:Cells(3,3)
RC区域 R[-12]C:R[-1]C[1]
单元格的偏移
语法
表达式.Offset(RowOffset,ColumnOffset)
行列的引用
使用Range引用
Dim I& 等价于 dim i as Long
表达式: 算术表达式 字符串表达式 关系表达式和逻辑表达式
运算符:算术 关系 字符 赋值
"<>" 不等于
函数:系统函数 EXCEL表函数
一些常用的字符函数
int(n) 取不大于n的整数
随机函数Ran
取[a,b]之间的随机函数 int((b-a+1)*Ran+a)
Range("A2").Value = InputBox("请输入身份证号", "身份证管理", , 1000, 1500)
End Sub
Sub 统计() '分区域判断
Dim mumber As Single
Sheet1.Select
Number = InputBox("请输入一个整数", "输入正数")
While Wend 与Do前侧型一致
退出循环体用 Exit For
多重循环
子过程
自定义函数过程
命名参数
面向对象程序设计方法
认识对象
对象的三要素:属性、方法和事件
常用5类对象 Application Workbook Worksheet、Range和Chart
对象和集合
=COUNTIF(区域,"<>") 计算非空单元格数目
删除表示有确认删除提示时 在程序里加入如下命令可以免去提示
Application.DisplayAlerts = False
On Error Resume Next '防止出错
例在替换过程中,将空格替换为a,但在区域中根本就没有空格则继续运行
单元格删除
语法
表达式.Delete(shift)
行列的删除
语法:
表达式.Delete
例:Columns(5).Delete Columns("E").Delete
单元格的插入
语法
表达式.Insert(shift)
当前单元格 ActiveCell
单元格保护(锁定)
例:Range("A2").Value = InputBox("请输入身份证号", "身份证管理", , 1000, 1500)
Number = InputBox("请输入一个整数", "输入正数")
Format(V, "0.00") '保留两位小数
选择结构 条件表达 IF函数
1、显式定义:Dim 变量名 As 类型
2、隐式定义:使用类型说明符
类型说明符如下:
%——整型
&——长整型
!——单精度浮点数
#——双精度浮点数
@——货币型
$——字符串型
楼主的情况就属于第二种——隐式定义。
例:
DIM A$表示定义一个变量A,类型为字符串型。
Next
End Sub
Sub 多重循环2()
Dim i As Integer, j As Integer, A As String * 18
Dim m As Integer, n As Integer
'计算身份证号的行数
m = Range("A65535").End(xlUp).Row
Range("B2","D6")
[B2:D6]
Range(Cells(2,2),Cells(6,4))
扩展区域Resize使用
语法
表达式.Resize(行数,列数)
例:Range("B2").Resize(5,3) 从B2开始扩展的区域为5行3列的区域
选取整个工作表
Cells.Select 选取全部单元格
Rows("3:5")引用第3到5行
Rows引用工作表上的所有行
Rows 变量引用
x = [A2]
y = [A10]
Rows(x & ":" & y).Select
数字变量混用
Rows( "3:" & y).Select
使用Column引用列
Columns(3)、Columns("C")
On Error GoTo 0
表示禁止当前过程中任何已启动的错误处理程序。
ACCESS
表
表设计 表头 内容格式
查询
查询设计 设计向导 express
Sub test()
Dim A As Integer, B As Integer, C As Integer
Randomize
VBA的编辑环境为VBE进入快捷方法 alt+F11
VBA的编辑环境:主窗口(工程窗口、属性窗口、代码窗口、菜单栏和工具栏)
立即窗口
VBA编程基础
数据类型包括数值型、字符型、布尔型、日期型、货币性、变体型
若省略Public和Private则默认为Private
定义变量可以使用显式或隐式两种方式定义:
例如:Range("3:3")引用第3行
Range("3:5") 引用第3到5行
Range("A:A") 引用第A列
Range("A:C") 引用第A到C列
Range 变量引用
Range("A" & i & ":A" & (i+3)).Select
使用Rows引用行
例如:Rows(5)引用第5行
For X = 1 To 4
Select Case ture
Case IsNumeric(Range("A" & X))
mst = "数值"
Case Application.IsText(Range("A" & X))
mst = "文本"
End Select
MsgBox Range("A" & X) & "是" & mst
自动筛选Autofilter
高级筛选 AdvanceFilter
语法:
表达式.AdvanceFilter(Action,CriteriaRange,CopyToRange,Unique)
find()
ISERR() 检查一个值是否为#N/A以外的错误 返回ase 0 To 5
Range("B1") = "0到5之间"
Case 6 To 10
Range("B1") = "6到10之间"
Case 11, 12, 13, 14, 15
Range("b1") = "11到15之间“"
Case 16 To 20
If(条件,条件为真时的值,条件为假时的值)
*** Range("A1").Value可以写作Range("A1")
循环结构
For Next 结构 适用场合:
语法
For 循环变量=初始值 to 终值[step 步长]
循环体
Next 循环变量
For each in 结构 适用场合:事先不知道循环次数,在确定的集合中遍历每一个对象
语法
For each 元素 in 集合
语句体
Next 元素
Do loop 结构 分前侧和后侧
前侧型循环结构
语法
Do [{While|Until} <条件>]
循环体
loop
后侧型循环结构
语法
Do
循环体
loop[{While|Until} <条件>]
Range("B1") = "16~20之间"
Case Is < 50
Range("B1") = "21~50之间"
Case Else
Range("B1") = "不在1到50之间"
End Select
End Sub
Sub Example2()
Dim mst As String, X As Integer
Debug.Print s;
End Sub
Private Sub test3()
Dim i As Integer, N As Integer
N = 1
For i = 1 To 6
N = N * i
Next i
Debug.Print N;
End Sub
Sub test()
指定快捷键
Onkey
Ctrl ^
shift +
+ {+}
right {right}
常用文件的操作
打开文件FileDialog.show
获取文件名称
工作簿
创建工作簿
语法
对象.Add(Template)
打开工作簿
语法
Workbooks.Open"<需要打开文件的位置>\<文件名称>"
语句及语法 不区分大小写
代码书写基本原则
对象.动词
对象.名词
输入数据 计算处理 输出结果
基本结构:由赋值语句组成的顺序结构,由条件语句组成的选择结构和由循环语句组成的循环语句
with语句 实用场合:设置一个对象的多个属性,可以简化程序结构
with 对象
.属性值1=属性值
Columns("C:E")
Columns引用工作表的所有列
Columns(a & ":" & b)
不连续行、列的引用
Range("3:5,7:8") 引用第3至5行和第7到8行
Range("C:D,F:G") 引用第C至D列和第F到G列
单元格区域的引用
Range("B2:D6")
B = Int((10 * Rnd) + 1)
C = A + B
Debug.Print A; B; C
Sub Test1()
Dim SearchString, SearchChar, MyPos
SearchString = "xxxxpxxxx"
Columns.Select 选取全部列
Rows.Select 选取全部行
a=Char(i) 把数值i转换成大写A~E的字符
单元格区域之间的复制
复制语法
表达式.Copy(Destination)
粘贴语法
表达式.Paste(Destination,Link)
单元格的删除和清除
If then
单行结构格式
区块结构格式
If 条件 then
语句行
End If
多条件判断
If 条件1 Then
语句行1
Elseif 条件2 Then
语句行2
Elseif 条件3 Then
语句行3
...
Else
语句行 n
EndIf
Select Case
.属性值2=属性值
End with
MsgBox 消息对话框
MsgBox()
例:MsgBox Range("A" & X) & "是" & mst
MsgBox "完成,共用:" & Format(Timer - str, "0.00") & "秒"
Inputbox(提示信息,[标题],[默认值],[xpos],[ypos])
宏定义 能够自动完成某个任务的一组指令的集合
录制宏
宏的保存位置:当前工作簿,新工作簿 个人宏工作簿
加载宏
数字签名
使用相对引用录制宏
录制宏的局限性:不具备判断,循环
VBA Visual Basic For Application
VBA与VB都基于同一种语言 即Basic
VBA与VB的区别:
ISERROR() 检查一个值是否为错误(#N/A,) 返回true或false
使用 CStr 函数将数字值转换为 String
TEXT() 将指定的数值格式转换成文本
COUNTIF的用法:
在存放统计结果的单元格中输入:=COUNTIF(要统计的单元格区域,判断条件表达式)
例:如果要统计C3:C33单元格区域中,大于80的单元格个数,结果存放在C34单元格中,则在C34单元格中输入:=COUNTIF(C3:C33,">80")
SearchChar = "p"
MyPos = InStr(1, SearchString, SearchChar, vbBinaryCompare)
Debug.Print MyPos
End Sub
Sub test2()
s = DateDiff("d", #1/19/2013#, Now)
For i = 2 To m
A = Range("A" & i).Value
单元格的引用:
A1样式 例如:Range("A1")
Cells样式 Cells(行号,列号) 例如:Cells(3,3)
RC区域 R[-12]C:R[-1]C[1]
单元格的偏移
语法
表达式.Offset(RowOffset,ColumnOffset)
行列的引用
使用Range引用
Dim I& 等价于 dim i as Long
表达式: 算术表达式 字符串表达式 关系表达式和逻辑表达式
运算符:算术 关系 字符 赋值
"<>" 不等于
函数:系统函数 EXCEL表函数
一些常用的字符函数
int(n) 取不大于n的整数
随机函数Ran
取[a,b]之间的随机函数 int((b-a+1)*Ran+a)
Range("A2").Value = InputBox("请输入身份证号", "身份证管理", , 1000, 1500)
End Sub
Sub 统计() '分区域判断
Dim mumber As Single
Sheet1.Select
Number = InputBox("请输入一个整数", "输入正数")
While Wend 与Do前侧型一致
退出循环体用 Exit For
多重循环
子过程
自定义函数过程
命名参数
面向对象程序设计方法
认识对象
对象的三要素:属性、方法和事件
常用5类对象 Application Workbook Worksheet、Range和Chart
对象和集合
=COUNTIF(区域,"<>") 计算非空单元格数目
删除表示有确认删除提示时 在程序里加入如下命令可以免去提示
Application.DisplayAlerts = False
On Error Resume Next '防止出错
例在替换过程中,将空格替换为a,但在区域中根本就没有空格则继续运行
单元格删除
语法
表达式.Delete(shift)
行列的删除
语法:
表达式.Delete
例:Columns(5).Delete Columns("E").Delete
单元格的插入
语法
表达式.Insert(shift)
当前单元格 ActiveCell
单元格保护(锁定)
例:Range("A2").Value = InputBox("请输入身份证号", "身份证管理", , 1000, 1500)
Number = InputBox("请输入一个整数", "输入正数")
Format(V, "0.00") '保留两位小数
选择结构 条件表达 IF函数
1、显式定义:Dim 变量名 As 类型
2、隐式定义:使用类型说明符
类型说明符如下:
%——整型
&——长整型
!——单精度浮点数
#——双精度浮点数
@——货币型
$——字符串型
楼主的情况就属于第二种——隐式定义。
例:
DIM A$表示定义一个变量A,类型为字符串型。
Next
End Sub
Sub 多重循环2()
Dim i As Integer, j As Integer, A As String * 18
Dim m As Integer, n As Integer
'计算身份证号的行数
m = Range("A65535").End(xlUp).Row
Range("B2","D6")
[B2:D6]
Range(Cells(2,2),Cells(6,4))
扩展区域Resize使用
语法
表达式.Resize(行数,列数)
例:Range("B2").Resize(5,3) 从B2开始扩展的区域为5行3列的区域
选取整个工作表
Cells.Select 选取全部单元格
Rows("3:5")引用第3到5行
Rows引用工作表上的所有行
Rows 变量引用
x = [A2]
y = [A10]
Rows(x & ":" & y).Select
数字变量混用
Rows( "3:" & y).Select
使用Column引用列
Columns(3)、Columns("C")
On Error GoTo 0
表示禁止当前过程中任何已启动的错误处理程序。
ACCESS
表
表设计 表头 内容格式
查询
查询设计 设计向导 express
Sub test()
Dim A As Integer, B As Integer, C As Integer
Randomize
VBA的编辑环境为VBE进入快捷方法 alt+F11
VBA的编辑环境:主窗口(工程窗口、属性窗口、代码窗口、菜单栏和工具栏)
立即窗口
VBA编程基础
数据类型包括数值型、字符型、布尔型、日期型、货币性、变体型
若省略Public和Private则默认为Private
定义变量可以使用显式或隐式两种方式定义:
例如:Range("3:3")引用第3行
Range("3:5") 引用第3到5行
Range("A:A") 引用第A列
Range("A:C") 引用第A到C列
Range 变量引用
Range("A" & i & ":A" & (i+3)).Select
使用Rows引用行
例如:Rows(5)引用第5行
For X = 1 To 4
Select Case ture
Case IsNumeric(Range("A" & X))
mst = "数值"
Case Application.IsText(Range("A" & X))
mst = "文本"
End Select
MsgBox Range("A" & X) & "是" & mst
自动筛选Autofilter
高级筛选 AdvanceFilter
语法:
表达式.AdvanceFilter(Action,CriteriaRange,CopyToRange,Unique)
find()
ISERR() 检查一个值是否为#N/A以外的错误 返回ase 0 To 5
Range("B1") = "0到5之间"
Case 6 To 10
Range("B1") = "6到10之间"
Case 11, 12, 13, 14, 15
Range("b1") = "11到15之间“"
Case 16 To 20
If(条件,条件为真时的值,条件为假时的值)
*** Range("A1").Value可以写作Range("A1")
循环结构
For Next 结构 适用场合:
语法
For 循环变量=初始值 to 终值[step 步长]
循环体
Next 循环变量
For each in 结构 适用场合:事先不知道循环次数,在确定的集合中遍历每一个对象
语法
For each 元素 in 集合
语句体
Next 元素
Do loop 结构 分前侧和后侧
前侧型循环结构
语法
Do [{While|Until} <条件>]
循环体
loop
后侧型循环结构
语法
Do
循环体
loop[{While|Until} <条件>]
Range("B1") = "16~20之间"
Case Is < 50
Range("B1") = "21~50之间"
Case Else
Range("B1") = "不在1到50之间"
End Select
End Sub
Sub Example2()
Dim mst As String, X As Integer
Debug.Print s;
End Sub
Private Sub test3()
Dim i As Integer, N As Integer
N = 1
For i = 1 To 6
N = N * i
Next i
Debug.Print N;
End Sub
Sub test()
指定快捷键
Onkey
Ctrl ^
shift +
+ {+}
right {right}
常用文件的操作
打开文件FileDialog.show
获取文件名称
工作簿
创建工作簿
语法
对象.Add(Template)
打开工作簿
语法
Workbooks.Open"<需要打开文件的位置>\<文件名称>"
语句及语法 不区分大小写
代码书写基本原则
对象.动词
对象.名词
输入数据 计算处理 输出结果
基本结构:由赋值语句组成的顺序结构,由条件语句组成的选择结构和由循环语句组成的循环语句
with语句 实用场合:设置一个对象的多个属性,可以简化程序结构
with 对象
.属性值1=属性值
Columns("C:E")
Columns引用工作表的所有列
Columns(a & ":" & b)
不连续行、列的引用
Range("3:5,7:8") 引用第3至5行和第7到8行
Range("C:D,F:G") 引用第C至D列和第F到G列
单元格区域的引用
Range("B2:D6")