课程来源:王佩丰老师的《王佩丰学VBA视频教程》,如有侵权,请联系删除!
目录
[1. 将对象赋值到变量(SET)](#1. 将对象赋值到变量(SET))
[2. 认识DIR函数](#2. 认识DIR函数)
[2.1 dir函数简介](#2.1 dir函数简介)
[2.2 多文件合并](#2.2 多文件合并)
[3. Find函数(全区域查找,并返回Range)](#3. Find函数(全区域查找,并返回Range))
1. 将对象赋值到变量(SET)
vbnet
Sub Set_Func()
Dim sht As Worksheet
For i = 2 To 5
'SET方法 将新建工作表对象赋值到sht变量
Set sht = Sheets.Add
sht.Name = Sheet1.Range("a" & i)
Next
End Sub
2. 认识DIR函数
2.1 dir函数简介
1. dir后面的参数应该以反斜杠"\"结尾,这样才能返回该文件夹下的文件名称。否则"新建文件夹"会被当成一个文件名进行处理。
2.Dir运行一次只能得到一个文件名。为得到下一个文件名,代码应该这样写:filename = Dir。
3.第二次使用Dir,后面不写任何参数,如果写了与前面相同的参数,则会重新扫描该文件夹,又得到第一个文件名,如果更改为其他文件夹,就扫描该文件夹,得到它的第一个文件名
4. 如果文件夹中有n个文件,或者说有n个符合条件的文件,那么当Dir运行第n+1次时,则返回一个空字符串,代表已经查找完所有的文件。Dir运行第n+2次时,程序将报错。
2.2 多文件合并
vbnet
Sub Merge_WB()
'文件合并
Dim WBs_Name As String
Dim WB As Workbook
Dim sht As Worksheet
'返回满足条件的文件名
WBs_Name = Dir("d:\data\*.xls*")
Do while WBs_Name <> ""
Set WB = Workbooks.Open("d:\data\" & WBs_Name)
For Each sht In WB.Sheets
sht.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name _
= VBA.Split(WB.Name, ".")(0) & sht.Name '工作薄名称 & 工作表名称
Next
WB.Close
WBs_Name = Dir '返回下一个满足条件的文件名
Loop
End Sub
3. Find函数(全区域查找,并返回Range)
vbnet
Sub Range_Search()
Dim rng As Range
' 对象赋值到变量
' 若未成功查找,rng变量为nothing(啥也没有)
' 分开写的原因是因为如果rng为nothing时,offset会出错
Set rng = Range("d:d").Find(Range("l3"))
If Not rng Is Nothing Then
'rng 不为nothing
Range("m3") = rng.Offset(0, 3)
End If
End Sub