项目的一些背景(如果你不关心,请跳过这个)
最近,我的任务是构建一个解决方案,让我和我的队友能够快速处理我们所谓的“食谱”。不幸的是,不能使用任何其他语言,如 Python,因为所有文件都是加密的,除非它们在特定程序中打开。Excel 就是其中之一,因此我们整个办公室都倾向于使用 VBA。几乎来自我曾经使用过的每一种语言,VBA 是......可怕地开发复杂的项目(只是一个意见),所以我冒险通过创建一个库来让我(和我的同事)的生活更轻松各种类型、函数、类等
问题
出于某种原因,以下代码将始终执行,alreadyExists Line而不是仅在Error引发时执行:
Private Sub SetName(index As Integer, name As String)
On Error GoTo alreadyExists
If (Not NameExists(name)) Then
internalName(index) = name
Else
Err.Raise 515, "SetName", "Name exists"
End If
alreadyExists:
MsgBox ("Name already exists in array.")
End
End Sub
其他Subs人处理这种模式就好了,但是这个Sub一直运行alreadyExists错误。Sub调用它的将是:
Public Sub Insert(data As Variant, Optional name As String)
Dim i As Integer
If (Not internalData) = -1 Then
i = 0
Else
i = UBound(internalData) + 1
End If
Call ResizeTo(i)
If name = "" Then
internalName(i) = i
Else
SetName i, name
End If
internalData(i) = data
End Sub
如果您觉得所有代码都是必要的,那么您可以在这里找到它。