关于VBA的简短问题
我正在VBA中学习类模块,并且我遇到了在类模块中声明变量的新实践。在这里:
Public WithEvents TxtGroup As MSForms.TextBox
也
Dim Word1 As Word.Application
Dim bottomLabel As New System.Windows.Forms.Label
在 As 和新关键字之后,我们会看到两个单词连接的单词,而不是查看数据类型或对象或对类对象的引用就像某种目录...... 例如 MSForms.TextBox 因为我的问题有点开箱即用,我无法在我的VBA书籍上找到对声明技术中这种转换的充分解释。 我需要非常快速地学习课程,我肯定想问为什么我会遇到这种做法,因为我从未在模块中看到它。
我见过的例子是
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
为什么这些代码块在其声明中没有名称空间,而其他代码块呢? 感谢您收看我的问题
答案 0 :(得分:3)
看看这个MSDN article about Namespaces in VB。
结合编程,术语namespace means表示包:
命名空间是一组标识符的容器(也称为 符号,名称)。[1] [2]命名空间提供了一个间接级别 特定标识符,从而可以区分 具有相同名称的标识符。
因此namespace允许具有相同名称的classes共存并并排使用。在每个包中,可以驻留一个或多个具有唯一名称的类。例如:
例如:
namespace Teachers
class Person end class
end namespace
namespace Doctors
class Person end class
end namespace
为了创建一个政治家对象,你需要唯一地识别这个类,所以你不能只写:
Dim p as Person
因为编译器无法知道从两个Person类中实例化哪个。这就是为什么你用它的命名空间识别类:
Dim t as Teachers.Person
Dim d as Doctors.Person
在您给出的示例中:
Dim Word1 As Word.Application
Word 是命名空间,应用类,因此变量的类型!
定义变量时,最后一个部分(在最后一个点之后)始终是一个类,最后一个点之前的所有内容都是命名空间!在您给出的示例中,您使用的是命名空间Systems.Windows.Forms中的TextBox。
如果类名是唯一的,即使它位于任何命名空间中,也不需要编写它,因为编译器可以自动推断出正确的名称。 在VB.NET中有 import 关键字,您可以使用该关键字将命名空间导入到您的代码中,以便在不使用命名空间限定类的情况下使用这些类。