本文将详细介绍Excel表格基本对象的概念,譬如工作簿、工作表、单元格,以及怎么声明并引用他们。
工作簿,英文名workbook,指的是一个单独的excel文件。

工作表,英文名worksheet,指的是我们工作簿下的一张表格。一个工作簿里可以有很多张工作表,也就是我们打开工作簿后左下角可以看到的Sheet1、Sheet2。

单元格,英文名cell,指的是工作表上的一个个小格子,也是不可再分的最小对象。单元格就像细胞一样,所以他的英文名和细胞的英文一样是cell。

了解了概念,我们再来说说怎么去声明、引用这些工作簿、工作表、单元格。
先来解释一下什么叫声明和引用。说人话就是:
声明:向大家宣布:旺财是狗的名字;
引用:向大家宣布,旺财是村头吴老二家的那只狗。
转成代码就是:
Dim 旺财 As 狗
Set 旺财=村头吴老二家的那只狗
让我们看看工作簿、工作表、单元格各自怎么引用。
工作簿的声明和引用
声明
Dim wb As Workbook
这句代码声明了一个工作簿对象wb。
引用
如果我们有一个Excel文件,在电脑上的位置是D:\abc\a.xlsx,那么我们可以这样引用他:
Set wb=Workbooks.Open("D:\abc\a.xlsx")
这样就让这个工作簿在我们的代码里有有了一个称呼:wb,同时也会打开这个工作簿。如果我们想要引用一个已经打开的工作簿,我们可以使用这种代码:
Set wb=Workbooks("a.xlsx")
如果我们想引用我们正在写代码的这个工作簿,可以使用:
Set wb=ThisWorkbook
工作表的声明和引用
声明
Dim ws As Worksheet
这句代码声明了一个工作表对象ws。
引用
工作表的引用有多种方式。
如果我们要引用工作簿wb中的一张名叫“汇总”的工作表,我们可以使用以下代码:
Set ws= wb.Worksheets(“汇总”)
如果我们要引用工作簿wb中的第二张工作表,我们可以使用以下代码:
Set ws=wb. Worksheets(2)
事实上,工作表自身就有名字,可以在VBA左侧的工程视图中看见:

所以我们不用声明、引用也可以直接用他们自己的名字,如wb.Sheet1、wb.Sheet2。
单元格的声明和引用
声明
Dim rg As Range
这行代码声明了一个单元格区域rg。
Range是一堆单元格的集合范围,他表示表格中的一部分区域。
引用
如果我们只需要引用单元格,比如我们要引用wb中的工作表ws中的C列4行,我们可以使用这样的代码:
Set rg=ws.Range("C4")
或者:
Set rg=ws.Cells(4,3)
Cells(4,3)表示4行3列,也就是C4单元格。
如果我们需要引用一片单元格区域,比如A1到D4的一片矩形区域,我们可以使用:
Set rg= ws.Range("A1:D4")
也可以使用更简单的中括号:
Set rg= ws.[A1:D4]
还有很多别的引用单元格方法,但是并不需要全部记住,只要能解决问题,自己用起来熟练就可以了。
最后,让我们连起来做一遍吧!
丝滑小连招
如果我们要引用路径为D:\VBA\01.xlsx的工作簿里的第三张工作表里 的D6单元格并获得里面的值,我们怎么做?
我们可以这样:
Dim wb As Workbook
Dim ws As Worksheet
Dim rg As Range
Set wb=Workbooks.Open("D:\VBA\01.xlsx")
Set ws=wb.Worksheets(3)
Set rg=ws.Range("D6")
Msgbox rg.Value
我不建议直接一步到位地写成这样:
Dim rg As Range
Set rg= Workbooks.Open("D:\VBA\01.xlsx").Worksheets(3).Range("D6")
Msgbox rg.Value
这种代码看起来省事简单,其实是不好的习惯,不利于检查代码和调试,尽量不要偷懒!