什么是VBA编译器在定义类,全局变量和子函数时的事件顺序?

问题描述 投票:2回答:1

我在声明级别的代码中打破了一个全局枚举类型声明,让我想到我在一个包含许多类和函数的非常大的项目中错过了结束标记。希望将我的搜索范围缩小到编译器中的全局声明之前的任何内容。错误是“需要常量表达式”

枚举是金融模拟程序中使用的三种之一。我正在调试我修复的课程,然后所有的枚举都破了。使用常量修复此第一个调用只会导致下一个错误。

我做了一个测试子来隔离调用,没有函数调用,但是,枚举是无法识别的。

全球宣言:

Public Enum DistributeType
    dSalary = 0
    dUnit = 1
    dShares = 2
End Enum

Public Enum OptionType
    oNew = 0
    oRecycle = 1
End Enum

Public Enum ColumnType
    ctName = 1      'A
    ctBirth         'B
    ctHire          'C
    ctParticipate   'D
    ctSex           'E
    ctSalary        'F
    ctHours         'G
    ctTermination   'H
    ctStatus        'I
    ctNonVested     'J
    ctCashAccount   'K
    ctLStockAccount 'L
    ctNStockAccount 'M
    ctStockDivest   'N

End Enum

Sub Test()
    Dim i As Integer

    i = DistributeType.dSalary

    Debug.Print i

End Sub

我在做什么:

Initialialize_PayOut()
With employee
    'Forfeiture Delay
        Dim i As Integer
        i = 0
        i = Range("v_DelayForf").value
        .ForfeitDelay = i

        Debug.Print "Forfeit Delay: " & .ForfeitDelay
End with
End Sub

编辑类员工:

Private pForfeitDelay As Integer

Public Property Get ForfeitDelay() As Integer
    ForfeitDelay = pForfeitDelay
End Property

Public Property Let ForfeitDelay(value As Integer)
    pForfeitDelay = value
End Property

这段代码似乎没有任何问题,但没有复制整个项目,就没有任何线索可能。

excel vba global-variables
1个回答
0
投票

虽然不是对实际问题的回答,但Alex K.为代码无效的原因提供了解决方案。

有一个古老的错误,枚举解析可以导致错误,可以通过删除其中一个值,单击块然后撤消或重新输入(或简单地重新启动Excel)来修复 - Alex K.

© www.soinside.com 2019 - 2024. All rights reserved.