image

VBA中的类是什么?

类是要创建的对象的蓝图。类本身不执行任何操作,但是使用类可以创建多个相同的对象,这些对象可以执行操作或用作数据资源。

在现实生活中,汽车的模型(设计和功能)是一类,而汽车本身就是该类的对象。在课堂上,我们定义了汽车的内在功能以及它可以做什么。例如,一辆汽车有4个轮子,5个齿轮,方向盘等。这些是属性/属性。

我们还定义了汽车的功能,例如前进,后退,转弯等。这些是汽车类的功能。使用汽车类创建的汽车对象将具有所有这些属性。如果您定义的汽车有5个轮子,则比使用此类创建的汽车将有5个轮子。你明白了。

理论上已经足够,现在让我们看看如何在VBA中使用类模块。

使用Excel VBA类模块

在VBA中工作时,必须使用Range(“ A1”)。select。范围是VBA中的预定义类。选择是选择指定范围的Range类的功能之一。同样,Debug是VBA中的类,而print和assert是它的方法。工作表,工作簿,范围等都是我们在订阅中使用的VBA类。

image

创建自己的课程

首先,我们需要在VBA中添加一个类模块,按ALT + F11组合键打开excel VBA编辑器。

  • 右键单击项目资源管理器。将光标移至插入→类模块。点击它。可以从“插入”菜单中完成相同的操作。

image

  • 该类将被添加到“类模块”文件夹中。默认名称类似于class1,class2等。您可以从属性窗口更改类名称。让我们将类命名为“ Welcome”。

image

现在让我们向类添加一些属性。由于我希望这些属性对公众可用,因此我使用了可访问性运算符* public。

Public name As String

Public var1 As Integer

Public var2 As Integer
  • 现在,我们向该类添加一个函数。我想要一个说嗨的功能!给用户。为此,添加一个子并将其命名为sayHiTo。

Sub sayHiTo(user As String)

name = user

MsgBox ("Hi! " & name)

End Sub
  • 现在让我们在模块中使用类。如果没有,请插入一个新模块。写一个子。我已将子测试命名为。

Sub test()

Dim wc As New Welcome 'Declared and initialized Welcome object

wc.sayHiTo ("Jack") 'used sayHiTo method of Welcome Object.

End Sub
  • 使用F5键运行此子测试。它将在Excel工作簿上提示“嗨!杰克”。

image

如何运作?

在子测试中,我们创建了Welcomeclass对象“ wc”。通过两种方法在VBA中创建对象。我们运行代码,Test子项创建Welcome类的对象wc。该对象具有Welcome类的所有属性。我们使用Welcome类的sayHiTo方法向用户问好。

在Excel VBA中创建对象

。 ..即时创建在即时创建中,我们创建一个对象,同时使用“ new”键声明该对象。在上面的示例中,我们使用了即时创建。

Dim wc As New Welcome

{空} 2。延迟创建在延迟创建中,我们首先仅声明对象。我们不使用“新”关键字。为了使用该对象,我们需要使用“ new”关键字对其进行初始化。

Sub test()

Dim wc As Welcome

'wc.sayHiTo ("Jack") 'generates error since wc is not initialised yet

'initialising object

Set wc = New Welcome

wc.sayHiTo ("Cory") 'this will work.

End Sub

访问类的变量

在上面的示例中,我们在类中使用了公共变量,但是实践是错误的。我们应该避免在类中使用公共变量。

现在的问题是,我们将如何访问该类的变量。之前,我们使用子例程访问名称,但是VBA类提供了用于系统地更新和检索该类的私有变量值的属性。该属性比用于更新和访问私有变量的子或函数更优雅。让我们看看如何。

类属性的语法

Private name As String

Private var1 As Integer

Private var2 As Integer

Property Let MyName(nm As String)

name = nm

End Property

Property Get MyName() As String

MyName = name

End Property

让我们在模块中使用它们。

Sub test()

'creating class object

Dim wc As New Welcome

Dim wc1 As New Welcome



'using properties

wc.MyName = "Exceltip.com"

wc1.MyName = "ExcelForum.com"



Debug.Print wc.MyName

Debug.Print wc1.MyName



End Sub

当您运行此测试子项时,将为“ Welcome”类的两个对象打印两个名称。

属性与子函数和

|的区别在上面的示例中,请注意,我们已将MyName属性用作变量。我们只需编写wc.MyName =“ assdf”即可初始化“名称”变量的值。这行命令称为属性,名为Property Get MyName()As String。我们没有像开始时那样在括号中传递任何值。

同样,要打印“名称”变量的值,我们使用了commandDebug.Print wc.MyName。它不像普通变量初始化那样简单吗?唯一的区别是,您可以在房地产领域做很多事情。您进行数据验证,计算,通信等操作,用户将只能看到结果。

另一个区别是,我们可以使用属性的相同名称来进行let和get * part。这使它变得更容易,也减少了混乱。

是的,这是Excel VBA中类模块的简单示例。

这只是冰山一角,在这个主题中有很多汁液,我们将在以后的文章中进行探讨。我们将以最简单的方式逐一探讨它们。我希望我的解释足以使您理解这一点。如果您对此主题或任何其他excel VBA主题有疑问,请在下面的评论部分中提及它。

相关文章:

`link:/ modules-class-modules-in-vba-insert-a-new-module-from-file-using-vba-in-microsoft-excel [在Microsoft Excel中使用VBA从文件导入模块] `|了解如何使用VBA从另一个文件导入整个模块。

在Microsoft Excel中使用VBA创建新模块您可以使用模块在VBA中创建另一个模型。这可以帮助您最大程度地减少额外的开销工作。

在Microsoft Excel中使用VBA向模块添加过程要将过程自动添加到模块,请使用此VBA代码。

热门文章:

50 Excel快捷方式以提高生产率更快地完成任务。这50个快捷键将使您在Excel上的工作速度更快。

Excel中的VLOOKUP函数在Excel 2016中为COUNTIF使用此惊人的功能对条件进行计数。

您无需过滤数据即可计算特定值。 Countif功能对于准备仪表板至关重要。

如何在Excel中使用SUMIF函数这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。