我在声明级别的代码中打破了一个全局枚举类型声明,让我想到我在一个包含许多类和函数的非常大的项目中错过了结束标记。希望将我的搜索范围缩小到编译器中的全局声明之前的任何内容。错误是“需要常量表达式”
枚举是金融模拟程序中使用的三种之一。我正在调试我修复的课程,然后所有的枚举都破了。使用常量修复此第一个调用只会导致下一个错误。
我做了一个测试子来隔离调用,没有函数调用,但是,枚举是无法识别的。
全球宣言:
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
这段代码似乎没有任何问题,但没有复制整个项目,就没有任何线索可能。
虽然不是对实际问题的回答,但Alex K.为代码无效的原因提供了解决方案。
有一个古老的错误,枚举解析可以导致错误,可以通过删除其中一个值,单击块然后撤消或重新输入(或简单地重新启动Excel)来修复 - Alex K.