1、Range("a1") = "小李飞刀" 代码如果放在模块中,Range前面不指定其父对象(工作表),那么该代码就是操作当前的活动工作表,使其A1单元格值为“小李飞刀”。
2、一般建议Range对象前面都写上其父对象,以免代码容易受活动工作表切换而导致得不到结果。
3、弄清楚工作表?
Worksheet和Sheet都可以用来表示工作表,不同的是Worksheet仅仅指工作表,但Sheet并不仅仅是工作表,还包括图表、宏表、对话框等。
要弄清楚Worksheet和Sheet的区别,可以选择一个工作表,鼠标右键--插入,如下图。
Sheet可以表示是大红色方框里面的任意对象,包含Worksheet;
Worksheet仅表示小红方框里的工作表;
所以,很多时候,都可以用Worksheet和Sheet来表示工作表。
自然,Worksheets集合和Sheets集合所包含的对象也不一样。
Worksheets集合仅仅是工作表的集合,Sheets集合可以是工作表、图表等对象的“混合”。
当一个工作簿中,只有工作表的时候,Wokrsheets和Sheets并无区别。
当一个工作簿中,既有工作表又有图表的时候,Wokrsheets和Sheets就包含不同的内容。(注意Chart1图表)
4、一般情况下,可以使用工作表的索引Index、名称(Name)、CodeName三种方法来表示(引用)工作表。
4.1、Worksheets(Index)引用工作表:工作表从左到右排列,索引(Index)是1、2、3、4......排号。如下图中显示一个工作簿中的a、b、c 3个工作表。
For i = 1 To 3
Worksheets(i).Select
Worksheets(i).[a1] = i
Next
上面代码返回结果:Worksheets(1)表示工作表 a;Worksheets(2)表示工作表 b;Worksheets(3)表示工作表 c .
可以通过下面的Gif看得更清楚:
将a、b、c三个工作表换个顺序,再运行上面的代码:
可以得出,索引只和工作表的位置有关,和工作表的名称无关。
Wokrsheets(1)表示工作表 c ;Wokrsheets(2)表示工作表 a;Wokrsheets(3)表示工作表 b .
用Index来引用工作表,不是一个稳妥的做法,因为很容易因为工作表位置的改变导致 Wokrsheets(1) 表示不同的工作表对象。
4.2、Worksheets(工作表名称)表示引用工作表,工作表名称是唯一的,不能重复。
在工程管理器中,可以看到每个工作表的名称a、b、c(括号内)。
因为工作表的名称的唯一性,所以使用工作表名称引用工作表,是比较靠谱的,也是较常用的做法,除非工作表名称改变或者删除工作表,否则便不会出错。
直接的引用工作表
Worksheets("a").Range("a1") = "小李飞刀" 工作表 a 的单元格赋值为“小李飞刀”
通过变量引用工作表
Dim xname As String xname = "b" Worksheets(xname).Range("a1") = "小李飞刀"
4.3 通过CodeName引用工作表。
红色方框中的名称就是工作表的CodeName,它是工作表自新建起就带有的、固定不变的。
类似我们的身份证,姓名可以改,但身份证号码不能变。
所以CodeName比工作表名称更靠谱,套用一句名言:化成灰都认得你。
Sheet1.[a1] = "小李飞刀" Sheets("a").[a1] = "小李飞刀" Sheets(1).[a1] = "小李飞刀"
上面三句代码返回相同结果:(注意工作表从左到右的顺序a/b/c)
将工作表 a 的位置拖到最右边,名称改为 d,再运行上面的代码:
Sheet1.[a1] = "小李飞刀" 操作的仍然是 当初的 工作表a ,即使工作表名称从a改为d,但因为使用
CodeName引用工作表,所以无论是工作表名称a还是d,都是引用同一个工作表,CodeName是不变的
注意上图中的工程管理器中的 Sheet1(d),Sheet1就是CodeName。
Sheets("a").[a1] = "小李飞刀" 因工作表a的名称改为d,故发生错误。
Sheets(1).[a1] = "小李飞刀" 因工作表a(d)拖到最右边,所以Sheets(1)表示的是工作表 b 。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved