VBA变量变暗问题

VBA变量变暗问题,vba,excel,methods,Vba,Excel,Methods,只是一个关于VBA的简单问题 我正在学习VBA中的类模块,我遇到了在类模块中声明变量的新实践。下面是: Public WithEvents TxtGroup As MSForms.TextBox 也 在As和New关键字之后,我们看到的不是数据类型、对象或对类对象的引用,而是两个单词加上句点,就像某种目录一样。。。 e、 由于我的问题有点开箱即用,我在VBA书籍上找不到对声明技术中这种转换的充分解释。 我需要非常快地学习课程,我肯定想问为什么我会遇到这种做法,因为我从来没有在模块中见过它 我看

只是一个关于VBA的简单问题

我正在学习VBA中的类模块,我遇到了在类模块中声明变量的新实践。下面是:

Public WithEvents TxtGroup As MSForms.TextBox

AsNew关键字之后,我们看到的不是数据类型、对象或对类对象的引用,而是两个单词加上句点,就像某种目录一样。。。 e、 由于我的问题有点开箱即用,我在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
为什么这些代码块的声明中没有名称空间,而其他代码块却有名称空间? 感谢您收看我的问题

请看一下

与编程相关的术语是指包:

命名空间是一组标识符(也称为 符号、名称)。[1][2]名称空间为 特定标识符,从而可以区分 具有相同确切名称的标识符

因此,使用相同的名称可以共存并并行使用。在每个包中,可以驻留一个或多个具有唯一名称的类。例如:

namespace Teachers
    class Person end class
end namespace

namespace Doctors
    class Person end class
end namespace
例如:

namespace Teachers
    class Person end class
end namespace

namespace Doctors
    class Person end class
end namespace
为了创建一个对象,您需要唯一地标识该类,因此您不能只写:

Dim p as Person
因为编译器不知道从两个人类中实例化哪个。这就是为什么要用名称空间标识类:

Dim t as Teachers.Person
Dim d as Doctors.Person
在您给出的示例中:

Dim Word1 As Word.Application   
Word名称空间,应用程序是类,因此是变量的类型

定义变量时,最后一部分(最后一个点之后)始终是类,最后一个点之前的所有内容都是命名空间!在您给出的示例中,您使用的是命名空间中的文本框

如果类名是唯一的,即使它位于任何名称空间中,也不需要编写它,因为编译器可以自动推断正确的名称。
在VB.NET中有import关键字,您可以使用该关键字将名称空间导入到代码中,以便在不使用名称空间限定类的情况下使用它们。

Word是名称空间,应用程序是类,因此是变量的类型!定义变量时,最后一部分(最后一个点之后)始终是类,最后一个点之前的所有内容都是命名空间!在您给出的示例中,您使用的是命名空间中的文本框,我已经更新了我的答案并回答了您的问题。我马上会扩展它。太棒了!最后,我在书中自动搜索了我的VBA名称空间工作,没有人解释名称空间公理。它是所有编程语言的术语吗?因为我记得在XML中看到过它。为了消除我的疑虑,这也可以对常规模块执行吗?容器是否起到任何作用?是的,编程中的名称空间是一个通用术语,与(AFAIK)所有编程和标记(XML)语言相同。“容器”是什么意思?@pasty…政客和同一名称空间中的人-有点牵强?!