问题:Excel怎么着在一列中展现出办事薄中全数专门的学问表的名称?
VBA学习笔记
回答:
哪些是VBA?它有何样效用?
笔记摘抄自EXCEL精英培养练习-深黄幻想
在一列中显示职业薄的具备工作表的名目,不应用VBA的解决方案下如:
A.达成Excel中并未兑现的效劳。
VBA学习笔记01(链接卡塔 尔(英语:State of Qatar)
VBA学习笔记02 (链接卡塔尔
首先步,选创设名称变量,如下图,先点击按键,在弹出的对话框中输入名称变量“A”,引用地方处输入公式“=get.workbook(1)”.
B.进步运转速度。
目录
C.编写自定义函数。
CH1 VBA底子知识
其次步,设置公式 ,在做事表B第11中学设置公式
“=INDEX(A,ROW(A1))”,鼠标移至B1单元格右下角,待光标形成棕红十字光标后,按住鼠标左键向下拖动复制公式,最后效果如下:
D.完毕自动化功效。
CH2 VBA函数与公式
E.通过插入窗体做Mini管理软件。
CH3 VBE编辑器
回答:
VBA在哪儿存放的?怎么运作?
CH4 分支与END语句
其大器晚成主题材料能够简化为:
A.模块中
CH5 文件操作
<br />
<br />
获取二个专门的学问簿里面有着的sheet_name?
在Excel 20第10中学若未有“开垦工具”项,通过“文件”——“选项”——“自定义功效区”——选中“开荒工具”——“分明”(图1卡塔 尔(阿拉伯语:قطر。
CH1 VBA底子知识
(1卡塔 尔(英语:State of Qatar)平常遭遇必要拿到sheet_name的场地是:
(注:为了增长word20第10中学插入的图形的成色,“文件”——“选项”——“高等”——选中“不压缩文件图像品质”——“鲜明”。卡塔尔国
一、VBA对象:
VBA中的对象实际正是大家操作的装有艺术、属性的excel中扶植的靶子
Excel中的多少个常用对象表示方法
一齐初未有很好的简化式命名sheet_name,sheet_name中从不统生龙活虎的格式,还有空格等这种情景。
1、工作簿
Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿
Workbooks ("工作簿名称")
ActiveWorkbook 正在操作的工作簿
ThisWorkBook 代码所在的工作簿
尚未合理接收工作簿,有个别只是为着“方便”,三个工作簿建了四十多个以上的sheet,其实这种分类做法实在给你的频率优惠扣的!
图1 选中“文件”—“选项”
2、工作表
Sheets(“专门的学问表名称”)
Sheet1 表示第叁个插入的职业表,Sheet2代表第贰个插入的劳作表….
Sheets(n) 表示按排列顺序,第n个专业表
ActiveSheet 表示活动职业表,光标所在专门的学问表
worksheet 也象征专门的职业表,但不包涵图片职业表、宏工作表等。
难度指数:♢
图2 ”自定义功效区”—“开垦工具”——“鲜明”
3、单元格
cells 所有单元格
Range ("单元格地址")
Cells(行数,列数)
Activecell 正在选中或编辑的单元格
Selection 正被选中或选取的单元格或单元格区域
在无人问津sheet个数的处境首要推荐VBA:
二、VBA方法和总体性
新建一个表,新建宏,输入上边代码:
图3 最后的分界面多出了“开采工具”选项卡
1.VBA属性:VBA属性正是VBA对象所负有的风味。表示某些对象的性质的主意是。
对象.属性=属性值
Sub ttt()
Range("a1").Value = 100
End Sub
Sub a()
2.VBA方法
VBA方法是成效于VBA对象上的动作
代表用有些方法效果于VBA的靶子上,能够用上边包车型客车格式:
Sub ttt4()
牛排.做 熟的程度:=七成熟
Range("A1").Copy Range("A2")
End Sub
For Each sh In Sheets
图4 代码贮存在“模块”中
三、VBA语句
k = k + 1
B.运行宏
1.宏主次语句:运转后方可达成一个效应
Sub test() 开始语句
Range("a1") = 100
End Sub 结束语句
Cells(k, 1) = sh.Name
单击向右的绿三角,即能够运作。
2.函数顺序语句:运转后方可回去三个值
Function shcount()
shcount = Sheets.Count
End Function
Next
3.在程序中应用的言辞
Sub test2()
Call test
End Sub
Sub test3()
For x = 1 To 100 for next 循环语句
Cells(x, 1) = x
Next x
End Sub
End Sub
4.论断语句
(1卡塔 尔(阿拉伯语:قطرIF剖断语句
Sub 判断() 单条件判断
If Range("a1").Value > 0 Then
Range("b1") = "正数"
Else
Range("b1") = "负数或0"
End If
End Sub
Sub 判断2() 多条件判断
If Range("a1").Value > 0 Then
Range("b1") = "正数"
ElseIf Range("a1") = 0 Then
Range("b1") = "等于0"
ElseIf Range("B1") <= 0 Then
Range("b1") = "负数"
End If
End Sub
Sub 多条件判断2()
If Range("a1") <> "" And Range("a2") <> "" Then
Range("a3") = Range("a1") * Range("a2")
End If
End Sub
(2卡塔尔国IFF函数剖断
Sub 判断4()
Range("a3") = IIf(Range("a1") <= 0, "负数或零", "负数")
End Sub
(3)select判断
Sub 判断1() 单条件判断
Select Case Range("a1").Value
Case Is > 0
Range("b1") = "正数"
Case Else
Range("b1") = "负数或0"
End Select
End Sub
Sub 判断2() 多条件判断
Select Case Range("a1").Value
Case Is > 0
Range("b1") = "正数"
Case Is = 0
Range("b1") = "0"
Case Else
Range("b1") = "负数"
End Select
End Sub
Sub 判断3()
If Range("a3") < "G" Then
MsgBox "A-G"
End If
End Sub
(4卡塔 尔(阿拉伯语:قطر推断范围
Sub if 区间判断()
If Range("a2") <= 1000 Then
Range("b2") = 0.01
ElseIf Range("a2") <= 3000 Then
Range("b2") = 0.03
ElseIf Range("a2") > 3000 Then
Range("b2") = 0.05
End If
End Sub
Sub select区间判断()
Select Case Range("a2").Value
Case 0 To 1000
Range("b2") = 0.01
Case 1001 To 3000
Range("b2") = 0.03
Case Is > 3000
Range("b2") = 0.05
End Select
End Sub
—>运行
图5 右绿三角运转
5.循环语句
(1)
Sub t1()
Range("d2") = Range("b2") * Range("c2")
Range("d3") = Range("b3") * Range("c3")
Range("d4") = Range("b4") * Range("c4")
Range("d5") = Range("b5") * Range("c5")
Range("d6") = Range("b6") * Range("c6")
End Sub
(2卡塔尔FOSportage <循环变量>=<初值>to<终值> [step 步长]
<循环体>
[EXIT FOR]
<循环体>
NEXT [循环变量]
Sub t2()
Dim x As Integer
For x = 10000 To 2 Step -3
Range("d" & x) = Range("b" & x) * Range("c" & x)
Next x
End Sub
(3)
Sub t3()
Dim rg As Range
For Each rg In Range("d2:d18")
rg = rg.Offset(0, -1) * rg.Offset(0, -2)
Next rg
End Sub
(4) do[ while 逻辑表达式]
<循环体>
[EXIT DO]
<循环体>
loop [while 逻辑表明式]
Sub t4()
Dim x As Integer
x = 1
Do
x = x + 1
Cells(x, 4) = Cells(x, 2) * Cells(x, 3)
Loop Until x = 18
End Sub
(5)
Sub t5()
x = 1
Do While x < 18
x = x + 1
Cells(x, 4) = Cells(x, 2) * Cells(x, 3)
Loop
End Sub
『看完有获取点个赞吧- -』
图6 选中test并“运行”
6.变量
(1卡塔尔国什么是变量?
所谓变量,正是可变的量。就好象在内部存储器中权且存放的八个小盒子,那一个小盒子放的怎么物体不固定。
Sub t1()
Dim X As Integer x就是一个变量
For X = 1 To 10
Cells(X, 1) = X
Next X
End Sub
(2卡塔尔变量的类型和表明
A.变量的项目
byte 字符型(0-255)
integer 整数型(-32768-32767)
long 长整数型
single 单精度浮点型
double 双精度浮点型
currency 货币型
decimal 小数型
string 字符串型 (数字 文本卡塔尔国
date 日期型
boolean 布尔型 (逻辑决断卡塔尔国
variant 万能型
B.申明变量
dim 变量名 as 数据类型
dim str as string
C.如给文本、数值、日期等数据型变量赋值
let 变量名称 =数据
如给指标变量(object型,如单元格卡塔 尔(阿拉伯语:قطر赋值
set 变量名称=对象
e.g
set rng=worksheets("sheet1").range("a1")
rng.value="欢迎"
利用常量
const 变量名称 as 数据类型-数值
const p as single =3.14
(3卡塔 尔(英语:State of Qatar)变量的共处周期
1 进度级变量:进程截止,变量值释放
如t1
2 模块级变量:变量的值只在本模块中维系,职业簿关闭时随时释放
例5
Sub t6()
m = 1
End Sub
Sub t5()
MsgBox m
m = 7
End Sub
3 全局级变量:
在具备的模块中都能够调用,值会保存到EXCEL关闭时才会被释放。
public 变量
Sub t7()
MsgBox qq
End Sub
(4卡塔尔变量的放走
相符意况下,进度级变量在经过运营甘休后就能够自行从内部存款和储蓄器中放出,而独有部分从外表借用的对象变量才要求运用set
变量=nothing实行自由。
<br />
<br />
回答:
CH2 VBA函数与公式
1、宏表函数
图7 运维结果
风流浪漫、在单元格中输入公式
2、使用VBA,都能够的
3.如何是宏?宏和VBA有哪些关系?
1、用VBA在单元格中输入不足为道公式
Sub t1()
Range("d2") = "=b2*c2"
End Sub
Sub t2()
Dim x As Integer
For x = 2 To 6
Cells(x, 4) = "=b" & x & "*c" & x
Next x
End Sub
回答:
宏(Macro),是生龙活虎种批量处理。
2、用VBA在单元格输入带引号的公式
Sub t3()
Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" 遇到单引号就把单引号加倍
End Sub
能够利用链接功用,做成目录,查找也惠及,再在每张表中设再次来到键直接重返目录。
宏经常不只能够摄像又足以手动编制程序,而VBA平日是经过编程达成。宏能够和VBA相结合使用。
3、用VBA在单元格中输入数组公式
Sub t4()
Range("c9").FormulaArray = "=SUM(B2:B6*C2:C6)"
End Sub
回答:
4.录制贰个宏。
二、利用单元格公式重返值
Sub t5()
Range("d16") = Evaluate("=SUMIF(A2:A6,""b"",B2:B6)")
Range("d9") = Evaluate("=SUM(B2:B6*C2:C6)")
End Sub
一定于建个目录索引,函数和代码都得以的
A.“开荒工具”——“摄像宏”——宏名叫“输入100”——“摄像”——在A1单元格中输入100——“结束”。
三、借用职业表函数
Sub t6()
Range("d8") = Application.WorksheeFunction.CountIf(Range("A1:A10"), "B")
End Sub
B.“宏”——选中“输入100”——“执行”。
四、利用VBA函数
Sub t7()
Range("C20") = VBA.InStr(Range("a20"), "E")
End Sub
五、编写自定义函数
Function wn()
wn = Application.Caller.Parent.Name
End Function
<br />
<br />
5.编纂贰个宏。
CH3 VBE编辑器
- 1.讲解文字 :文字前加单引号
- 2.勒迫转行 空格+下划线
- 3.调节和测验工具栏: 逐语句运转或按F8
- 4.装置断点:STOP
- 5.任何时候窗口: debug.print “第“&X&”运维结果“ 显示某步程序运营结果
- 6.地点窗口:展现运营中断时对象音信
<br />
<br />
A.“开辟工具”——“Visual Basic”——“视图”——“工程资源管理器”——“插入”——“模块”——在左边输入代码:
CH4 分支与END语句
一、END语句
效果:强制退出全数正在运维的主次。
B. 单击绿右三角就能够运转。或然关闭VBA编辑窗口,单击“宏”——选中“test”——“推行”。
二、Exit语句
脱离钦命的说话
1、Exit Sub
Sub e1()
Dim x As Integer
For x = 1 To 100
Cells(1, 1) = x
If x = 5 Then
Exit Sub
End If
Next x
Range("b1") = 100
End Sub
2、Exit function
Function ff()
Dim x As Integer
For x = 1 To 100
If x = 5 Then
Exit Function
End If
Next x
ff = 100
End Function
3、Exit for
Sub e2()
Dim x As Integer
For x = 1 To 100
Cells(1, 1) = x
If x = 5 Then
Exit For
End If
Next x
Range("b1") = 100
End Sub
4、Exit do
Sub e3()
Dim x As Integer
Do
x = x + 1
Cells(1, 1) = x
If x = 5 Then
Exit Do
End If
Loop Until x = 100
Range("b1") = 100
End Sub
三、分支语句
1.Goto语句,跳转到内定之处
Sub t1()
Dim x As Integer
Dim sr
100:
sr = Application.InputBox("请输入数字", "输入提示")
If Len(sr) = 0 Or Len(sr) = 5 Then GoTo 100
End Sub
2.gosub..return ,跳过去,再跳回来
Sub t2()
Dim x As Integer
For x = 1 To 10
If Cells(x, 1) Mod 2 = 0 Then GoSub 100
Next x
Exit Sub
100:
Cells(x, 1) = "偶数"
Return
End Sub
3.on error resume next 相遇错误,跳过继续实践下一句
Sub t3()
On Error Resume Next
Dim x As Integer
For x = 1 To 10
Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
Next x
End Sub
4.on error goto 弄错开上下班时间跳到钦赐的行数
Sub t4()
On Error GoTo 100
Dim x As Integer
For x = 1 To 10
Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
Next x
Exit Sub
100:
MsgBox "在第" & x & "行出错了"
End Sub
5.on error goto 0 撤废错误跳转
Sub t5()
On Error Resume Next
Dim x As Integer
For x = 1 To 10
If x > 5 Then On Error GoTo 0
Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
Next x
Exit Sub
<br />
<br />
6.VBA语句
CH5 文件操作
A.宏程序语句。
意气风发、常用概念
1.excel文书和专门的学业簿
excel文件便是excel事业簿,excel文件展开要求excel程的支撑
(1卡塔 尔(阿拉伯语:قطر Workbooks 专门的学问簿集结,泛指excel文件或专门的学问簿
Workbooks(“A.xls”),名称为A的excel工作簿
Sub t1()
Workbooks("A.xls").Sheets(1).Range("a1") = 100
End Sub
workbooks(2),按展开各样,第三个展开的专门的学业簿。
Sub t2()
Workbooks(2).Sheets(2).Range("a1") = 200
End Sub
(2卡塔尔国ActiveWorkbook
,当展开八个excel职业簿时,你正在操作的特别正是ActiveWorkbook(活动职业簿卡塔尔
(3卡塔 尔(英语:State of Qatar)Thisworkbook,VBA程序所在的专门的学业簿,无论你张开多少个工作簿,无论当前是哪个工作簿是移动的,thisworkbook就是指它所在的专业簿。
2.专门的学问簿窗口
Windows("A.xls"),A工作簿的窗口,使用windows可以设置工作簿窗口的状态,如是否隐藏等。
Sub t3()
Windows("A.xls").Visible = False
End Sub
Sub t4()
Windows(2).Visible = True
End Sub
3.excel专门的学业表的分类
excel专门的工作表有两大类,生机勃勃类是大家平时用的职业表(worksheet),另风度翩翩类是图片、宏表等。这两类的统称是sheets
sheets 工作表会集,泛指excel各类职业表
Sheets(“A”),名称为A的excel工作表
Sub t1()
Sheets("A").Range("a1") = 100
End Sub
workbooks(2),按展开种种,第二个展开的专门的学问簿。
Sub t2()
Sheets(2).Range("a1") = 200
End Sub
ActiveSheet ,当展开三个excel事业簿时,你正在操作的极其正是ActiveSheet
二、 EXCEL文件操作
1 推断A.Xls文件是还是不是留存
Sub W1()
If Len(Dir("d:/A.xls")) = 0 Then
MsgBox "A文件不存在"
Else
MsgBox "A文件存在"
End If
End Sub
2 推断A.Xls文件是不是展开
Sub W2()
Dim X As Integer
For X = 1 To Windows.Count
If Windows(X).Caption = "A.XLS" Then
MsgBox "A文件打开了"
Exit Sub
End If
Next
End Sub
3 excel文书新建和保留
Sub W3()
Dim wb As Workbook
Set wb = Workbooks.Add
wb.Sheets("sheet1").Range("a1") = "abcd"
wb.SaveAs "D:/B.xls"
End Sub
4 excel文件张开和停业
Sub w4()
Dim wb As Workbook
Set wb = Workbooks.Open("D:/B.xls")
MsgBox wb.Sheets("sheet1").Range("a1").Value
wb.Close False
End Sub
5 excel文件保留和备份
Sub w5()
Dim wb As Workbook
Set wb = ThisWorkbook
wb.Save
wb.SaveCopyAs "D:/ABC.xls"
End Sub
6 excel文本复制和删除
Sub W6()
FileCopy "D:/ABC.XLS", "E:/ABCd.XLS"
Kill "D:/ABC.XLS"
End Sub
7.剖断A专业表文件是不是留存
Sub s1()
Dim X As Integer
For X = 1 To Sheets.Count
If Sheets(X).Name = "A" Then
MsgBox "A工作表存在"
Exit Sub
End If
Next
MsgBox "A工作表不存在"
End Sub
-
excel工作表的插入
Sub s2() Dim sh As Worksheet Set sh = Sheets.Add sh.Name = "模板" sh.Range("a1") = 100 End Sub
9.excel专门的学业表隐瞒和撤除隐讳
Sub s3()
Sheets(2).Visible = True
End Sub
10.excel专业表的位移
Sub s4()
Sheets("Sheet2").Move before:=Sheets("sheet1") ‘sheet2移动到sheet1前面
Sheets("Sheet1").Move after:=Sheets(Sheets.Count) ’ sheet1移动到所有工作表的最后面
End Sub
11.excel职业表的复制
Sub s5() 在本工作簿中
Dim sh As Worksheet
Sheets("模板").Copy before:=Sheets(1)
Set sh = ActiveSheet
sh.Name = "1日"
sh.Range("a1") = "测试"
End Sub
Sub s6() 另存为新职业簿
Dim wb As Workbook
Sheets("模板").Copy
Set wb = ActiveWorkbook
wb.SaveAs ThisWorkbook.Path & "/1日.xls"
wb.Sheets(1).Range("b1") = "测试"
wb.Close True
End Sub
12.维护职业表
Sub s7()
Sheets("sheet2").Protect "123"
End Sub
Sub s8() 判断工作表是否添加了保护密码
If Sheets("sheet2").ProtectContents = True Then
MsgBox "工作簿保护了"
Else
MsgBox "工作簿没有添加保护"
End If
End Sub
皇家赌场网址hj9292,13.职业表删除
Sub s9()
Application.DisplayAlerts = False
Sheets("模板").Delete
Application.DisplayAlerts = True
End Sub
14.工作表的筛选
Sub s10()
Sheets("sheet2").Select
End Sub
B.函数程序语句
C.在前后相继中应运语句。
D.循环语句。
7.VBA对象
A.工作簿对象
Workbooks
代表职业簿集结,全部的专门的学问簿,Workbooks(N),表示已打开的第N个专门的学业簿
Workbooks (“职业簿名称”)
ActiveWorkbook 正在操作的职业簿
ThisWorkBook ‘代码所在的工作簿
B.职业表对象
Sheets(“职业表名称”)
Sheet1 表示第一个插入的工作表,Sheet2意味第一个插入的做事表….
Sheets(n) 表示按排列顺序,第n个工作表
ActiveSheet 表示活动职业表,光标所在职业表
worksheet 也意味职业表,但不包罗图形职业表、宏专门的学问表等。
C.单元格对象
cells 全体单元格
Range (“单元格地址”)
Cells(行数,列数) Range(“B3”卡塔尔和Cells(3,2卡塔 尔(英语:State of Qatar)表示形似的单元格
Activecell 正在选中或编辑的单元格
Selection 正被选中或接受的单元格或单元格区域
8. VBA属性
宏本领集绵,VBA学习笔记。 VBA属性就是VBA对象所全部的风味,表示某些对象的脾气如下:对象.属性=属性值
Sub ttt()
Range(“a1”).Value = 100 ’给单元格a1填充数值100
End Sub
Sub ttt1()
Sheets(1).Name = “工作表改名了” ’给职业簿重命名称叫“专业表改名了”
End Sub
Sub ttt2()
宏本领集绵,VBA学习笔记。 Sheets(“Sheet2”).Range(“a1”).Value =
“abcd” ’给sheet2职业表的a1单元格填充字符串“abcd”
End Sub
Sub ttt3()
’单元格的内部的填充色
Range(“A2”).Interior.ColorIndex = 3 ’将A2单元格的背景颜色设置为血红
Range(“A2”).Font.ColorIndex =
3 ’将A2单元格的书体颜色设置为革命
End Sub
9.VBA方法
VBA方法是法力于VBA对象上的动作,表示用有个别方法效果于VBA的对象上,能够用下边包车型地铁格式:
对象.方法 参数名称:=参数值
Sub ttt4()
’Range(“A1”).Copy Destination:= Range(“A2”)
Range(“A1”).Copy Range(“A2”) ’将A第11中学的内容复制到A2
End Sub
Sub ttt5()
Sheet1.Move before:=Sheets(“Sheet3”) ’将sheet1表移动到sheet3事先
End Sub
10.在一个乡政党的文件中供给将Excel中叁个报表的身份ID号,配对并填充到另三个表中。宏代码如下:
Sub 配对()
Dim I, J As Integer
For I = 3 To 225
For J = 4 To 930
If Sheets(“Sheet4”).Range(“b” & I).Value =
Sheets(“黄门乡”).Range(“b” & J).Value Then
Sheets(“Sheet4”).Range(“e” & I).Value =
Sheets(“黄门乡”).Range(“d” & J).Value
End If
Next J
Next I
End Sub
’竟然没写入End IF,提醒错误“Next 缺少 For”
11.判定语句
A.if决断语句
Sub 判别1() ‘单条件决断
If Range(“a1”).Value > 0 Then
Range(“b1”) = “正数”
Else
Range(“b1”) = “负数或0”
End If
End Sub
B.IIF决断语句
Sub 判断4()
Range(“a3”) = IIf(Range(“a1”) <= 0, “负数或零”, “负数”)
End Sub
C.select判断
Sub 判别1() ‘单条件推断
Select Case Range(“a1”).Value
Case Is > 0
Range(“b1”) = “正数”
Case Else
Range(“b1”) = “负数或0”
End Select
End Sub
Sub 剖断2() ‘多规格判定
Select Case Range(“a1”).Value
Case Is > 0
Range(“b1”) = “正数”
Case Is = 0
Range(“b1”) = “0”
Case Else
Range(“b1”) = “负数”
End Select
End Sub
Sub 判断3()
If Range(“a3”) < “G” Then
MsgBox “A-G”
End If
End Sub
D.区间决断
Sub if区间决断()
If Range(“a2”) <= 1000 Then
Range(“b2”) = 0.01
ElseIf Range(“a2”) <= 3000 Then
Range(“b2”) = 0.03
ElseIf Range(“a2”) > 3000 Then
Range(“b2”) = 0.05
End If
End Sub
Sub select区间推断()
Select Case Range(“a2”).Value
Case 0 To 1000
Range(“b2”) = 0.01
Case 1001 To 3000
Range(“b2”) = 0.03
Case Is > 3000
Range(“b2”) = 0.05
End Select
End Sub
12.循环语句
A.单语句代码
Sub t1()
Range(“d2”) = Range(“b2”) * Range(“c2”) ’将b2单元格与c2单元格相乘并赋值给d2单元格
Range(“d3”) = Range(“b3”) * Range(“c3”) ’将b3单元格与c3单元格相乘并赋值给d3单元格
Range(“d4”) = Range(“b4”) * Range(“c4”) ’将b4单元格与c4单元格相乘并赋值给d4单元格
Range(“d5”) = Range(“b5”) * Range(“c5”) ’将b5单元格与c5单元格相乘并赋值给d5单元格
Range(“d6”) = Range(“b6”) * Range(“c6”) ’将b6单元格与c6单元格相乘并赋值给d6单元格
End Sub
B.For each 循环语句
Sub s1()
Dim rg As Range
For Each rg In Range(“a1:b7,d5:e9”)
If rg = “” Then
rg = 0
End If
Next rg
End Sub
’注:在a1到b7单元区域和d5到e9单元格区域中的遍历全部单元格,若为空,就赋值0。
C、For Next语句
Sub t2()
Dim x As Integer
For x = 10000 To 2 Step -3
Range(“d” & x) = Range(“b” & x) * Range(“c” & x)
Next x
End Sub
注:将10000行数据中每间隔3行的b列和c列相乘赋值给d列。
D、For Each语句(应用offset方法来制定单元格卡塔尔国
Sub t3()
Dim rg As Range
For Each rg In Range(“d2:d18”)
rg = rg.Offset(0, -1) * rg.Offset(0, -2)
Next rg
End Sub
’注:offset正是偏移,针对d2来说,Offset(0, -1)指的就是向左移动1个单元格,即c2;而Offset(0, -2)指的正是向左移动2个单元格,即b2;第八个参数是垂直运动,正为发展,负为向下;第2个参数是水平位移,正为向右,负为向左。
图12 offset函数解析图
E.Do ……Loop Until语句
Sub t4()
Dim x As Integer
x = 1
Do
x = x + 1
Cells(x, 4) = Cells(x, 2) * Cells(x, 3)
Loop Until x = 18
End Sub
’注:Cell(行,列卡塔尔国,即上文中的x指的是行。将第二列和第三列相乘赋值给第四列。
F.Do While……Loop语句
Sub t5()
x = 1
Do While x < 18
x = x + 1
Cells(x, 4) = Cells(x, 2) * Cells(x, 3)
Loop
End Sub
’注:Cell(行,列卡塔尔国,即上文中的x指的是行。将第二列和第三列相乘赋值给第四列。
G.Do ……Loop Until语句
Sub s2()
Dim x As Integer
Do
x = x + 1
If Cells(x + 1, 1) <> Cells(x, 1) + 1 Then
Cells(x, 2) = “断点”
Exit Do
End If
Loop Until x = 14
End Sub
’判定第1列中的数据不三番两次,就在之后的单元格输入二个“断点”。
13. 学习变量
A、什么是变量?
所谓变量,便是可变的量。就好象在内部存款和储蓄器中一时存放的七个小盒子,那么些小盒子放的怎么着物体不固定。
Dim m As Integer
Sub t1()
Dim X As Integer ‘x正是三个整形变量
For X = 1 To 10
Cells(X, 1) = X
Next X
End Sub
B、小盒子里能够放什么?
1、放数字 2、放文本
Sub t2()
Dim st As String ’st寄存字符串
Dim X As Integer ’X贮存整数类型
For X = 1 To 10
st = st & “Excel精英培训”
Next X
End Sub
3、 放对象
Sub t3()
Dim rg As Range ’rg是单元格类型
Set rg = Range(“a1”) ’Set关键词就是给指标变量钦赐值
rg = 100
End Sub
4、 放数组
Sub t4()
Dim arr(1 To 10) As Integer, X As Integer
For X = 1 To 10
arr(X) = X
Next X
End Sub
’数组arr(1卡塔尔,arr(2卡塔尔国,arr(3卡塔尔……arr(10卡塔尔国都以整形类型
C、变量的花色和申明
1 变量的类别
(1)整型(Integer):
表示-32768至327第67中学间的平头 举个例子:10 110 20
(2)长整型(Long):
表示-2,147,483,648至2,147,483,647以内的整数
比方:长整型的书写:
23454444554
(3卡塔 尔(阿拉伯语:قطر单精度实型(Single卡塔尔:
有效数为7位
表示-3.37E+38至3.37E+38期间的实数
(4卡塔尔双精度实型(Double卡塔尔国:
有效数为十陆人
(5)字符型(String)
在VB中字符串常量是用双引号“
”括起的风姿浪漫串字符,例 如”ABC”,”abcdefg”,”123″,”0″,”VB程序设计”等。
(6) 逻辑型(Boolean)
逻辑型又称布尔型,其数额唯有True(真)和False(假)四个值
(7)日期型(Date)
表示日期和岁月
用两个“#”符号把日子和时间的值括起来
如:#08/20/2001#、#2001-08-20#
2 为何要注解变量
变量通过索引能够积累越来越多的值,在循环结构中的作用大。
3 注解变量
dim public
D、变量的并存周期
1 进度级变量:进程甘休,变量值释放
‘如t1
2 模块级变量:变量的值只在本模块中保持,职业簿关闭时随即释放
Sub t6()
m = 1
End Sub
Sub t5()
MsgBox m
m = 7
End Sub
3 全局级变量:
在装有的模块中都能够调用,值会保存到EXCEL关闭时才会被放出。
‘ public 变量
Sub t7()
MsgBox qq
End Sub
E、变量的刑满释放解除劳教
平日情况下,进度级变量在经过运维结束后就能够活动从内部存款和储蓄器中自由,而独有风流罗曼蒂克部分从外表借用的靶子变量才需求使用set
变量=nothing实行释放。
14.函数与公式
A、用VBA在单元格中输入不乏先例公式
Option Explicit
Sub t1()
Range(“d2”) = “=b2*c2” ’将b2乘以c2赋值给d2
End Sub
Sub t2()
Dim x As Integer
For x = 2 To 6
Cells(x, 4) = “=b” & x & “*c” & x ’将b列乘以c列赋值给d列
Next x
End Sub
B、用VBA在单元格输入带引号的公式
Sub t3()
Range(“c16”) = “=SUMIF(A2:A6,””b””,B2:B6)”
‘蒙受单引号就把单引号加倍
End Sub
注:在A2:A6单元格区域中,找到b项,共五个,将所对应的B列中的单元格值相加,即3+5=8。
C、用VBA在单元格中输入数组公式
Sub t4()
Range(“c9”).FormulaArray = “=SUM(B2:B6*C2:C6)”
End Sub
’注:将b列和c列相乘的结果
D、利用单元格公式重临值
Sub t5()
Range(“d16”) = Evaluate(“=SUMIF(A2:A6,””b””,B2:B6)”)
Range(“d9”) = Evaluate(“=SUM(B2:B6*C2:C6)”)
End Sub
E、借用专业表函数
Sub t6()
Range(“d8”) =
Application.WorksheeFunction.CountIf(Range(“A1:A10”), “B”)
End Sub
F、利用VBA函数
Sub t7()
Range(“C20”) = VBA.InStr(Range(“a20”), “E”)
End Sub
G、编写自定义函数
Function wn()
wn = Application.Caller.Parent.Name
End Function
15. VBE编辑器
A、工程窗口
a 显得工作簿专门的工作表对象
b 窗体
c 模块
d 类模块
range(“a1”)=10
‘对应工程窗口的指标和模板,展现其所具体的有些特点。
B、代码窗口
a 注释文字的安装
b 代码缩进的设置
c 代码强制转行的装置
d 代码运转和调治
‘逐句运行
‘设置断点
e 对象列表框和进度列表框
C、立刻窗口
立时窗口能够把运营进程中的值马上显示出来,首要用来程序的调治
Sub d()
Dim x As Integer, st As String
For x = 1 To 10
st = st & Cells(x, 1)
Debug.Print “第” & x & “次运维结果:” & st
Next x
End Sub
D、本地窗口
‘在本土窗口中能够来得运营中断时对象音讯、变量值、数组消息等
Sub d1()
Dim x As Integer, k As Integer
For x = 1 To 10
k = k + Cells(x, 1)
Next x
End Sub
16.VBA分支语句与End语句
A、END语句
作用:强制退出全体正在运转的主次。
B、 Exit语句:退出钦定的讲话
a、Exit Sub语句
Sub e1()
Dim x As Integer
For x = 1 To 100
Cells(1, 1) = x
If x = 5 Then
Exit Sub
End If
Next x
Range(“b1”) = 100
End Sub
b、Exit function语句
Function ff()
Dim x As Integer
For x = 1 To 100
If x = 5 Then
Exit Function
End If
Next x
ff = 100
End Function
c、Exit for语句
Sub e2()
Dim x As Integer
For x = 1 To 100
Cells(1, 1) = x
If x = 5 Then
Exit For
End If
Next x
Range(“b1”) = 100
End Sub
d、Exit do 语句
Sub e3()
Dim x As Integer
Do
x = x + 1
Cells(1, 1) = x
If x = 5 Then
Exit Do
End If
Loop Until x = 100
Range(“b1”) = 100
End Sub
C、VBA分支语句
Option Explicit
a、Goto语句,跳转到钦定的地点
Sub t1()
Dim x As Integer
Dim sr
100:
sr = Application.InputBox(“请输入数字”, “输入提示”)
If Len(sr) = 0 Or Len(sr) = 5 Then GoTo 100
End Sub
注:“100:”正是三个Goto语句能够跳入的标识。“Len(sr)=0”表示输入框未有输入,“Len(sr)
= 5”表裁撤。其实质正是“false”是5个字符。
b、gosub..return ,跳过去,再跳回来
Sub t2()
Dim x As Integer
For x = 1 To 10
If Cells(x, 1) Mod 2 = 0 Then GoSub 100
Next x
Exit Sub
100:
Cells(x, 1) = “偶数”
Return ‘跳到gosub 100 这一句
End Sub
c、on error resume next ‘境遇错误,跳过继续实践下一句
Sub t3()
On Error Resume Next
Dim x As Integer
For x = 1 To 10
Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
Next x
End Sub
d、on error goto ‘出错开上下班时间跳到内定的行数
Sub t4()
On Error GoTo 100
Dim x As Integer
For x = 1 To 10
Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
Next x
Exit Sub
100:
MsgBox “在第” & x & “行出错了”
End Sub
e、on error goto 0 ‘废除错误跳转
Sub t5()
On Error Resume Next
Dim x As Integer
For x = 1 To 10
If x > 5 Then On Error GoTo 0
Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
Next x
Exit Sub
End Sub
17、Excel文件操作的多少个概念
A、excel文件和职业簿概念
excel文件就是excel职业簿,excel文件张开要求excel程的支撑
Workbooks 专业簿集合,泛指excel文件或工作簿
Workbooks(“A.xls”),名称为A的excel工作簿
Sub t1()
Workbooks(“A.xls”).Sheets(1).Range(“a1”) = 100
End Sub
workbooks(2),按张开种种,第二个张开的职业簿。
Sub t2()
Workbooks(2).Sheets(2).Range(“a1”) = 200
End Sub
ActiveWorkbook
,当张开多个excel工作簿时,你正在操作的那么些正是ActiveWorkbook(活动职业簿卡塔 尔(英语:State of Qatar)
Thisworkbook,VBA程序所在的职业簿,无论你展开多少个专门的学业簿,无论当前是哪位专门的学问簿是活动的,thisworkbook就是指它所在的职业簿。
B、工作簿窗口
Windows(“A.xls”),A职业簿的窗口,使用windows能够设置职业簿窗口的场合,如是不是隐伏等。
Sub t3()
Windows(“A.xls”).Visible = False
End Sub
Sub t4()
Windows(2).Visible = True
End Sub
18、Excel文件的操作
A、 判别A.Xls文件是还是不是留存
Sub W1()
If Len(Dir(“d:/A.xls”)) = 0 Then
MsgBox “A文件官样文章”
Else
MsgBox “A文件存在”
End If
End Sub
B、 判别A.Xls文件是或不是张开
Sub W2()
Dim X As Integer
For X = 1 To Windows.Count
If Windows(X).Caption = “A.XLS” Then
MsgBox “A文件张开了”
Exit Sub
End If
Next
End Sub
C、excel文件新建和封存
Sub W3()
Dim wb As Workbook
Set wb = Workbooks.Add
wb.Sheets(“sheet1”).Range(“a1”) = “abcd”
wb.SaveAs “D:/B.xls”
End Sub
D、 excel文件张开和停业
Sub w4()
Dim wb As Workbook
Set wb = Workbooks.Open(“D:/B.xls”)
MsgBox wb.Sheets(“sheet1”).Range(“a1”).Value
wb.Close False
End Sub
E、 excel文件保留和备份
Sub w5()
Dim wb As Workbook
Set wb = ThisWorkbook
wb.Save
wb.SaveCopyAs “D:/ABC.xls”
End Sub
F、 excel文件复制和删除
Sub W6()
FileCopy “D:/ABC.XLS”, “E:/ABCd.XLS”
Kill “D:/ABC.XLS”
End Sub
19、专门的职业表的定义
A、excel工作表的归类
excel职业表有两大类,黄金年代类是我们日常用的工作表(worksheet),另风流浪漫类是图表、宏表等。这两类的统称是sheets
sheets 职业表集结,泛指excel种种职业表
Sheets(“A”),名称为A的excel工作表
Sub t1()
Sheets(“A”).Range(“a1”) = 100
End Sub
‘ workbooks(2),按展开各种,第二个张开的专门的学问簿。
Sub t2()
Sheets(2).Range(“a1”) = 200
End Sub
‘ActiveSheet
,当打开多个excel专门的学业簿时,你正在操作的不得了正是ActiveSheet
20、职业表的操作
A、判断A职业表文件是不是留存
Sub s1()
Dim X As Integer
For X = 1 To Sheets.Count
If Sheets(X).Name = “A” Then
MsgBox “A工作表存在”
Exit Sub
End If
Next
MsgBox “A工作表空中楼阁”
End Sub
B、 excel工作表的插入
Sub s2()
Dim sh As Worksheet
Set sh = Sheets.Add
sh.Name = “模板”
sh.Range(“a1”) = 100
End Sub
C、 excel工作表隐敝和注销隐敝
Sub s3()
Sheets(2).Visible = True
End Sub
D、 excel工作表的移动
Sub s4()
Sheets(“Sheet2”).Move before:=Sheets(“sheet1”)
‘sheet2移动到sheet1前面
Sheets(“Sheet1”).Move after:=Sheets(Sheets.Count)
‘sheet1活动到具有职业表的终极面
End Sub
E、 excel工作表的复制
Sub s5() ‘在本职业簿中
Dim sh As Worksheet
Sheets(“模板”).Copy before:=Sheets(1)
Set sh = ActiveSheet
sh.Name = “1日”
sh.Range(“a1”) = “测试”
End Sub
F、职业表的保存
Sub s6() ‘另存为新工作簿
Dim wb As Workbook
Sheets(“模板”).Copy
Set wb = ActiveWorkbook
wb.SaveAs ThisWorkbook.Path & “/1日.xls”
wb.Sheets(1).Range(“b1”) = “测试”
wb.Close True
End Sub
G、 珍视专门的学业表
Sub s7()
Sheets(“sheet2”).Protect “123”
End Sub
Sub s8() ‘推断职业表是或不是增加了维护密码
If Sheets(“sheet2”).ProtectContents = True Then
MsgBox “专门的工作簿保护了”
Else
MsgBox “专门的学问簿未有增多入保障护”
End If
End Sub
H、专门的学问表删除
Sub s9()
Application.DisplayAlerts = False
Sheets(“模板”).Delete
Application.DisplayAlerts = True
End Sub
I、专门的学问表的筛选
Sub s10()
Sheets(“sheet2”).Select
End Sub