vba - 类方法不能使用同一个类的私有(private)属性?

标签 vba excel

我对 VBA 类中的私有(private)属性有什么误解?作为新手,我希望同一类(模块)中的其他方法可以访问私有(private)属性,但在尝试编译时却得到“找不到方法或数据成员”。


作为私有(private)属性(property)让 lngMarketID 中断

这是我的标准模块中的内容:

Option Explicit

Public Model As classModel

Set Model = New classModel
Model.Setup

这个类模块名为 classModel:

Option Explicit

Private plngMarketID As Long


'plngMarketID Properties
Public Property Get lngMarketID() As Long
    lngMarketID = plngMarketID
End Property
Private Property Let lngMarketID(ByVal lngMarketID As Long)
    plngMarketID = lngMarketID
End Property


Public Sub Setup()

    SetuplngMarketID

End Sub

Private Sub SetuplngMarketID()

    Model.lngMarketID = CLng(DefaultLogicOptions.textboxMarketID.Value)

End Sub

作为公共(public)属性(property)让lngMarketID工作

“找不到方法或数据成员”突出显示 SetuplngMarketID 中的行的 .lngMarketID。当我将 Private Property Let lngMarketID 更改为 Public Property Let lngMarketID 时,编译效果很好。

最佳答案

这是该行中的“模型”。模型是一个全局变量,指向类的某个特定实例。从该对象中,只有公共(public)事物是可见的。

您想从类的任意实例“内部”引用它,因此只需删除模型前缀即可:

Private Sub SetuplngMarketID()

    lngMarketID = CLng(DefaultLogicOptions.textboxMarketID.Value)

End Sub

关于vba - 类方法不能使用同一个类的私有(private)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45889812/

相关文章:

vba - 使用 Excel VBA 打开工作簿,从某些单元格复制值,保存新表单,然后关闭打开的工作簿

EXCEL 2010 MACRO 连接包含不同行数的单元格

vba - Excel 2013 中的扩展工作表选择 - VBA

Excel:计算自动过滤表中单元格和单元格之间的差异

excel - 尝试在 Excel 中使用 VBA 从网页中提取一个值

c# - 如何在低版本(.Net)上使用Excel Interop?

python - 使用 openpyxl 改变所有单元格的样式

excel - 一次返回一个查找值和不同范围的多个对应值

excel - 您能否告诉 Excel 不要重新计算其内容基于 COM 组件的单元格?

excel - 忽略列中的零