Некоторый контекст в проекте (пропустите это, если вам все равно)
Недавно мне было поручено создать решение, которое позволило бы моим товарищам по команде быстро справиться с тем, что мы называем «Рецепты». К сожалению, нельзя использовать любой другой язык, например 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
Если вам кажется, что весь код необходим, вы можете найти его здесь .