VBAvariables暗淡的问题
在VBA上只是一个简单的问题
我正在学习VBA中的类模块,并且遇到了在类模块中声明variables的新练习。 这里是:
Public WithEvents TxtGroup As MSForms.TextBox
也
Dim Word1 As Word.Application Dim bottomLabel As New System.Windows.Forms.Label
在这之后的As和New关键字,而不是看到一个数据types或一个对象或一个类对象的引用,我们看到两个单词join一段时间就像某种目录…例如MSForms.TextBox,因为我的问题是一些开箱即用的function,我无法在我的VBA书上find关于这种声明技术转换的充分解释。 我需要非常快速地学习类,我一定会问,为什么我会遇到这种做法,因为我从来没有在模块中看到它。
我已经看到了一些例子
Private Sub xlApp_NewWorkbook(ByVal Wb As Workbook) Dim wks As Worksheet With Wb For Each wks In .Worksheets wks.PageSetup.LeftFooter = “Created by: “ & .Application.UserName wks.PageSetup.RightFooter = Now Next wks End With End Sub
为什么这些代码块在声明中没有名称空间,而其他代码块呢? 感谢您收看我的问题
看看这个关于VB中的命名空间的MSDN文章 。
结合编程术语命名空间意味着包装:
命名空间是一组标识符(也称为符号,名称)的容器。[1] [2] 命名空间为特定的标识符提供了一个间接级别,从而可以区分具有相同确切名称的标识符。
所以一个名称空间可以使具有相同名称的类并存,并且可以并排使用。 在每个包中,一个或多个具有唯一名称的类可以驻留。 例如:
例如:
namespace Teachers class Person end class end namespace namespace Doctors class Person end class end namespace
为了创build一个政客对象,你需要唯一标识这个类,所以你不能只写:
Dim p as Person
因为编译器无法知道从两个Person类中实例化哪个。 这就是为什么你用它的名字空间来标识类:
Dim t as Teachers.Person Dim d as Doctors.Person
在你给出的例子中:
Dim Word1 As Word.Application
Word是命名空间 ,应用程序的类和variables的types!
定义一个variables时,最后一部分(最后一个点之后)总是一个类,最后一个点之前的所有内容都是一个名称空间! 在您给出的示例中,您正在使用命名空间Systems.Windows.Forms中的TextBox。
如果类名是唯一的,即使它存在于任何名称空间中,也不需要编写它,因为编译器可以自动推断出正确的名称。 在VB.NET中有导入关键字,你可以通过它导入一个命名空间到你的代码,以便使用这些类而不用命名空间来限定它们。