标签:des cWeb style blog color io os 使用 java
Excel VBA工程的工作表类及对象
一、新建工作簿时的工作表类与对象:
1.类与对象的创建:
2.类与对象的名称:
二、修改CodeName:
1.CodeName在运行期间是只读的,即运行期间不能用代码改变工作表的这个属性,只能读取这个属性,否则会弹出错误对话框如下。
2.同步修改:
[1]CodeName可以修改,但只能在属性窗口中进行修改;
[2]当对它进行修改时,对应的类名和工作表对象名都会随之更改.
3.CodeName可以是中文,方便引用:
[1]当把CodeName改为“呵呵”之后就可以直接用“呵呵”来代指标签名为“试验”的工作表,VBA代码中极大方便对该工作表的访问。
[2]使用CodeName来引用工作表试验,代码及效果如下:
1 Sub test1() 2 Debug.Print "呵呵.Name = " & Chr(34) & 呵呵.Name & Chr(34) 3 Debug.Print "呵呵.CodeName = " & Chr(34) & 呵呵.CodeName & Chr(34) 4 End Sub
三、CodeName更改对工作表对象的影响:
看一个试验,代码如下:
1.“呵呵”工作表代码:
1 Public Value As Integer
2.ThisWorkBook模块代码:
1 Sub test2() 2 For i = 1 To 3 3 Debug.Print "==========第" & CStr(i) & "次==========" 4 Debug.Print "改变前:呵呵.Value = " & CStr(呵呵.Value) 5 呵呵.Value = 呵呵.Value + 2 6 Debug.Print "改变后:呵呵.Value = " & CStr(呵呵.Value) 7 Next 8 End Sub
3.将CodeName从“呵呵”修改变“Sht”,然后再执行以下代码:
1 Sub test3() 2 Debug.Print "从属性窗口将CodeName从“呵呵”改" & _ 3 "变为“Sht”之后:Sht.Value = " & CStr(Sht.Value) 4 End Sub
由此可见,当CodeName被修改时,代表其工作表的类的类名会跟着更改,代表其工作表的原有对象将被销毁(无法再访问),并会用新的类名所代表的类重新初始化一个此工作表对象。
四、总结:
1.CodeName在VBA代码运行期间是只读的,要修改CodeName只能通过属性窗口手动修改;
2.CodeName与工作表相关联的VBA代码类的类名以及工作表在VBA代码中的对象名是同步的,一改同改;
3.CodeName修改时,工作表对象将会从新的类名代表的工作表类重新初始化,原有的此工作表的工作表对象的数据及状态将丢失;
4.CodeName可以是中文;
5.Name只是工作表的标签名,在VBA代码中不能作为工作表的引用来使用;
6.工作簿打开时/工作表CodeName改变时/工作表新增/工作表被移入当前工作簿时,工作表对象将从工作表类被初始化或者重新初始化;
7.工作簿关闭/工作表CodeName改变/工作表被删除/工作表被移动到其它工作簿时,已经存在的对应的工作表对象将被销毁;
8.上述6-7之间时工作表对象的存在期,这之间的任何VBA代码对工作表对象的操作将被保存在工作表对象的各种属性中,当然有些改变也会反应在Excel界面上;
9.工作表类中声明的全局变量也是工作表的属性它们在上述6-7过程中的所有修改都会保存在它所在的内存中,当然对这些声明的全局变量所做的修改,不会如工作表对象其它固有属性那样被永久保存,这些修改在超过其生命周期时,将丢失,下次再被初始化时,上一次的状态将不复存在,所以如果有必要,就要注意这些全局变量的本地化了(保存结果数据的意思)。
标签:des cWeb style blog color io os 使用 java
原文地址:http://www.cnblogs.com/vitrox/p/3995232.html