我要投稿 | RSS
您当前的位置:首页 > ExcelVBA

工作簿workbook、工作表worksheet、单元格对象(rang、cell)

作者:      来源:原创
VBA对象
’VBA中的对象其实就是我们操作的具有方法、属性的excel中支持的对象

对象.方法 参数名称:=参数值,参数名称2:=参数值2,

鸡蛋.煎 煎的程度:9成

在菜单中,点击视图,点击对象浏览器,可以看不同的对象所具有的属性和方法。



Excel中的几个常用对象表示方法

单元格对象

cells 所有单元格格地址
Range(“单元格地址”):可以表示某个单元格,或者是某个区域
celis(行数,列数):可以配合row,column来指定动态单元格
Activecell 正在选中或编辑的单元格
Selection 正被选中或选取的单元格或单元格区域

对象.属性=属性值
比如:a1单元格的值为100
range("a1").value=100

比如:d1单元格的背景的颜色设置为某个颜色
Sheets(1).Range("d1").Interior.ColorIndex = 9
字体颜色设置:
Sheets(1).Range("d1").Font.ColorIndex = 2

理解Range("B2:B4, D2:D4")和Range("B2:B4", "D2:D4")的区别

前者表示2个区域,后者等价于Range("B2:D4")

Range和cells的结合使用:

Range("B2:D4")也可以用Range(Cells(2, 2), Cells(4, 4))来表示。

工作表对象

sheet1表示第一个插入的工作表sheet2表示第二个插入的工作表:以系统名称的sheet名为准。
特点:不受用户修改表名的影响,不受用户调整表顺序影响。

sheets("工作表名称")名称的工作表:表示所有工作表集中中指定的某个名称的工作表
特点:当sheet表名固定的情况下,使用此用方式。

Sheets(n) 表示按排列顺序工作表,第n个工作表:(以调整后的顺序为准),不建议使用。
特点:表顺序不调整的情况下,使用此种方式。

activesheet也表示活动工作表,标所在工作表。
worksheet也表示工作表,但不包括图表工作表、宏工作表等。

下面我们以一个工作一有实例来演示一下,比如运行日志1有5个工作表,部分工作表的名称做了修改,使用vba来进行演示不同sheet的用法。


Debug.Print Sheet5.Range("a1")中的sheet5,对应上图中左侧系统给出的sheet名称,因为具体的是某个工作表,所以并不需要加S,
Debug.Print Sheets(5).Range("a1")这一句中,加了S表示的是所有工作表中的第5个表(默认情况下,新建表都是从左到右,且未进行顺序的调整),
Debug.Print Sheets("sheet2").Range("a1")这一句中的工作表名称,是以我们修改后的形式表示,系统对应的sheet5我们看到的是sheet2的形式。
 

Sub sheets对象()
'Sheet = Sheets(1)
Debug.Print Sheet5.Range("a1")
Debug.Print Sheets(5).Range("a1")
Debug.Print Sheets("sheet2").Range("a1")
End Sub
 

当我们新建的工作表顺序发生变化时,则同样的代码,所运行出来的结果却是不同的,这里把二部的位置移至最后,看到第2行的结果发生了变化。


实际日期的这个结果,是二部这个表中a1的值。所以在使用sheets(数值为我们看到的Excel表的顺序),推荐使用sheetNsheet("工作表名称")的形式表示

sheet和worksheet的区别:


worksheet专指工作表,而sheet是范指,除了指worksheet以外,还可以指图表,宏表,对话框等。也就是说,sheet的范围大于worksheet,如果都是去指工作表时,2者基本没什么区别。

有个"s"就是复数,Worksheets是Worksheet的集合,Sheets是sheet的集合,worksheets是sheets的子集 

worksheets集合Count尾性返回工作簿中工作表的数量,而Sheets集合Count属性则返回工作中所有工作表的数量,包含图表工作表和工作表,
当然,很多情况下,Sheets只包含一般工作表(没图表、宏表.....,则两集合相等,Count数量也等,难怪有人把Sheets当作Worksheets的简写.

我来接下来看一个实例,比如打开了4个工作表,而vba写在某个表的模块中,运行的worksheets.count,所获取到的工作表的数量,只是此模板代码所对应的工作表的数量。


如上图,即立即窗口中的5,所表示的就是运行日志(1).xlsx中总共有5个工作表。

工作簿对象

Workbooks 代表工作簿集合,所有的工作
workbooks(N) ,表示已打开的第n个工作
Workbooks (“工作薄名称")
ActiveWorkbook 正在操作的工作薄
ThisWorkBook 代码所在的作薄

实例:

现在打开了4个Excel的工作表,在某个工作表中使用vba代码,来看一下一共打开的工作表的个数。


Sub 对象练习()

Debug.Print Workbooks.Count

End Sub
 

workbooks.count就是获取打开工作簿的数量。
注意:
在某个工作表中运行,都可以获取到整个打开的工作表的数量。和直接使用worksheets.count不同,worksheets.count只能获取到代码所在工作表的总表个数。

那如果要查询其他已经打开的工作薄中工作表的个数,我们只需要指定workbooks的名称,或者打开的第几个表,再进行查询就可以了。


总结一下:在excel的VBA中,默认的小范围都是代码所在的表,或者当前打开的活动表,当需要要指定的其他工作簿中指定的工作表中执行时,需要指定大的对象,小的对象,以及配合对应的属性和方法才能实现。
 

Sub 对象练习()

Debug.Print Worksheets.Count
Debug.Print Workbooks.Count
Debug.Print Workbooks(4).Worksheets.Count

End Sub
 
第4个工作簿有多少个工作表。第4个工作簿指的是1个,所以不加S,因为一个簿中有多个表,所以表要加s,就是wordksheets。
来顶一下
返回首页
返回首页
推荐资讯
{SUM函数}:计算单元格区域中所有数值的和
{SUM函数}:计算单元
LEFT函数:从一个文本字符串的第一个字符开始返回指定个数的字符
LEFT函数:从一个文本
MID函数:从文本字符串中指定的起始位置起返回指定长度的字符
MID函数:从文本字符
column函数:返回一引用的列号
column函数:返回一引
扫一扫微信二维码,联系作者:
相关文章
    无相关信息
栏目更新
栏目热门