《跟着王老师学Excel VBA》的笔记

先安利一款VBA的IDE(VBA代码宝): https://charltsing.lanzous.com/ic9qvzi

一、基础语法


'创建子程序
sub abc()                 
.....
end sub


'程序调用
call abc           '注意:不用加括号


 '定义自变量的类型
Dim i=....              

'For循环
for i = 1 to 5  Step 2        'Step定义步长
...
Next                         '循环结构(循环五次)

'IF判断语句
If ... then                   '如果...那么
...                           '...
else                          '否则
...                           '....
End If                   '切勿忘记End If

'多重判断
If Range("a" & i) = "理工" Then
Range("b" & i) = "LG"
ElseIf Range("a" & i) = "文科" Then    '再如果...那么
Range("b" & i) = "WK"                  '....
Else
Range("b" & i) = "CJ"
End If 


'使用IF语句,控制For循环
If Range("a" & i) = "" Then
	Exit For                       '退出For循环
End If

  • 删表格时,从下往上删,可避免错误。
  • ElseIf 可多次使用
  • 单元格的表示与操作
'单元格的表示
Range("a1")                '表示a1单元格
Range("a" & i)               '表示ai单元格
Sheet5.Range("a" & i)         '工作表5的ai单元格
Range("a1").value            '单元格的值(此属性为默认值,大多数情况下可省略)
Range("a1").Offset(2,3)          '由a1单元格下移2行,右移3列
Range("A1048576").End(xlUp).Select    '选中空白单元格的上边界
Range("A1048576").End(xlUp).Row    'A列非空单元格的个数
Range("b1").Resize(2, 4).Select      '选中b1为起点的2行4列的区域
Range("c3").EntireColumn.Select    '选中c3所在的整列
Range("c3").EntireRow.Select      '选中c3所在的整行
Range("a1").EntireColumn.Copy Range("c1") '将a1所在的整列复制到c列
Range("a1:b3").ClearContents           '清除A1:B3的内容

Sheet1.Cells(1, 2) = 99             '令工作表1的第1行第2列等于99

二、Worksheets(工作表)对象

  1. 工作表的选择(Select)
Sheet1.Select           '选择工作表1
Sheets(3).Select   		'选择第3个工作表(从左往右数)
Sheets("一月").Select    '选择名称为‘一月’的工作表
  1. 插入工作表
Sheets.Add                 '在当前工作表前面插入新sheet

Sheets.Add after:=Sheet3    '在sheet3后面插入新sheet

'在sheet3后面插入100个新sheet
Dim i As Integer
For i = 1 To 100
    Sheets.Add after:=sheet3
Next

'统计工作簿中所有工作表的数量
Sheet5.Range("a1") = Sheets.Count   '在工作表5的A1单元格中输出工作簿中所有工作表的数量
Sheet5.Range("a1") = Sheet1.Name   '在工作表5的A1单元格中输出工作表1的名称
Sheet1.Name = "小驴嗷嗷叫"   '将工作表1的名称改为‘小驴嗷嗷叫’


'使其总是在最后一张工作表后面插入新表
Sheets.Add after:=Sheets(Sheets.Count)

'
Dim i As Integer
For i = 1 To 100
    Sheets.Add after:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = i & "月"   '总是将最后一张工作表的名称改为‘i月’
Next

  • ‘Sheets.Count’ 的差异
    ‘Sheets.Count’的不同
  1. 删除工作表(Delete)
Excel.Application.DisplayAlerts = False  '关闭Excel的报错机制
sheet3.Delete                '删除工作表3
Excel.Application.DisplayAlerts = True   '开启Excel的报错机制

'插入100张工作表
Sheets.Add Count:=100

'删除100张工作表
Dim i As Integer
Excel.Application.DisplayAlerts = False
	For i = 1 To 100
		Sheets(1).Delete           '总是删除左起第一张工作表
	Next
Excel.Application.DisplayAlerts = True
  1. 复制工作表(copy)
'复制工作表1,并且将其置于左起第二张工作表之后
Sheet1.Copy after:=Sheets(2)

'复制工作表1,并且始终将其置于最后端
Sheet1.Copy after:=Sheets(Sheets.Count)

三、Workbooks(工作簿)对象

1.顺序循环每个单元格(For Each)

Dim rng As Range                         '定义rng为单元格变量
Dim x As Integer                    '注意x是初始值是 0 !!!
For Each rng In Range("a1:a10")    'rng的范围为A1至A10的每一个单元格
	x = x + 1
	rng=x                            'x顺序给A1至A10的每一个单元格(rng)赋值
Next

2.顺序循环每个工作表

Dim sht As Worksheet                   '定义sht为工作表变量
Application.DisplayAlerts = False     '关闭警告
For Each sht In Sheets                     
    If sht.Name <> "小驴嗷嗷叫" Then         '如果单元格名称不等于“小驴嗷嗷叫”,则
        sht.Delete                           '删除单元格(sht)
    End If
Next
Application.DisplayAlerts = True

3.工作簿的打开、操作、保存与关闭

Application.ScreenUpdating = False            '关闭屏幕刷新
Application.DisplayAlerts = False              '关闭警告
	Workbooks.Open Filename:="d:\小驴\嗷嗷叫.xlsx"        '打开EXCEL文件
	ActiveWorkbook.Sheets(1).Range("a1") = "五一学习VBA"        '向当前文件中写入
	ActiveWorkbook.Save                                        '保存
	ActiveWorkbook.Close                                    '关闭
Application.DisplayAlerts = True                         '开启警告
Application.ScreenUpdating = True                      '开启屏幕刷新

4.新建工作表

Workbooks.Add
ActiveWorkbook.Sheets(1).Range("a1") = "五一学习VBA"
ActiveWorkbook.SaveAs Filename:="d:\小驴\嗷嗷叫.xlsx"     '将工作薄保存到 d:\小驴,并命名为 嗷嗷叫.xlsx
ActiveWorkbook.Close
  • 注意:执行Sheet1.copy(复制工作表1)时,VBA会自动新建一个工作薄,然后将复制的Sheet1粘贴过去。

5.拆分工作薄

Dim sht As Worksheet
For Each sht In Sheets
	sht.Copy                                                '复制工作表
	ActiveWorkbook.SaveAs Filename:="d:\小驴\" & sht.Name & ".xlsx"   '保存
	ActiveWorkbook.Close                                     '关闭
Next

6.新建表(避免重名)----第6课

Dim sht As Worksheet
Dim k As Integer

For i = 1 To 3
    k = 0                              '每次循环后,再重新定义K为0
    For Each sht In Sheets
        If sht.Name = Sheet1.Range("a" & i) Then
            k = 1
        End If
    Next
    
    If k = 0 Then
        Sheets.Add after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = Sheet1.Range("a" & i)
    End If

Next

7.VBA的输入框

i = InputBox("请输入你要按哪列分")          '将用户的输入值赋给i

8.VBA的消息提示框

MsgBox "小驴嗷嗷叫"

七、VBA事件与典型应用案例

With sheet2
	.range("a1")
	.range("a3")
End With 
'上下两端代码意义相同,此即为With语法的作用
sheet2.range("a1")
sheet2.range("a3")

1.对齐方式
在这里插入图片描述
2.字体格式
在这里插入图片描述
3.工作簿事件
在这里插入图片描述
4.工作表事件
在这里插入图片描述


复试已过,继续VBA

八、在VBA中使用公式

  • 38
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值