【发布时间】:2019-11-20 15:18:12
【问题描述】:
我一直在使用 VBA for Excel 来实现简单的 Subs 和 Functions 来自动执行任务。
我熟悉 VBA 中的类模块和属性一词,但到目前为止我的所有代码都只包含简单的模块和用户窗体,我想更深入地研究该语言。
我无法理解属性的重要性,特别是我试图理解这两段代码之间的区别:
代码#1
'Class Module: "clsCustomer1"
Option Explicit
Public fName As String
Public sName As String
Public PhoneNumber As String
Public PIN As String
'Module: "Test1"
Sub test1()
Dim customer1 As New clsCustomer1
With customer1
.fName = "John"
.sName = "Smith"
.PhoneNumber = "6512346590"
.PIN = "55648"
Debug.Print .fName, .sName, .PhoneNumber, .PIN
End With
End Sub
代码#2
'Class Module: "clsCustomer2"
Option Explicit
Public Property Get cl_fName(ByVal name As String) As String
cl_fName = name
End Property
Public Property Get cl_sName(ByVal name As String) As String
cl_sName = name
End Property
Public Property Get cl_PhoneNumber(ByVal number As String) As String
cl_PhoneNumber = number
End Property
Public Property Get cl_PIN(ByVal number As String) As String
cl_PIN = number
End Property
'Module: "Test2"
Sub test2()
Dim customer2 As New clsCustomer2
With customer2
Debug.Print _
.cl_fName("John"), _
.cl_sName("Smith"), _
.cl_PhoneNumber("6512346590"), _
.cl_PIN("55648")
End With
End Sub
在这两种情况下,debug.print 都会给出相同的输出。我什至可以在第二种情况下分配相同的变量来匹配第一种情况。普通模块中的实际代码在这两种情况下几乎相同,如果第二个看起来更混乱的话。
既然可以在 Class 模块中声明变量,为什么还要使用 Properties?
显然,我的示例非常简单,但我在这里找不到合适的属性用例。
【问题讨论】:
标签: excel vba class properties