@ארי יפה, מתאים לקוד שאתה כותב. אבל לקוד של אחרים צריך זהירות.
יש אפשרות לכתוב Const ב Enum, ואז זה לא יעבוד.
הנה דוגמה של שגיאה:
Option Compare Database
Option Explicit
Const myConst As Integer = 4
Public Enum EnumTest
A = 1
B = 2
c = myConst
E = 15
End Enum
Public Function FindEnumString(EnumNum As String, EnumName As String, Optional ModuleName As String) As String
Dim ModStr As String
Dim EnumStr() As String
Dim i
If ModuleName = "" Then ModuleName = VBE.ActiveCodePane.CodeModule
ModStr = VBE.ActiveVBProject.VBComponents.item(ModuleName).CodeModule.Lines(1, VBE.ActiveVBProject.VBComponents.item(ModuleName).CodeModule.CountOfLines)
ModStr = Mid(ModStr, InStr(1, ModStr, "Enum " & EnumName) + Len("Enum " & EnumName), InStr(1, ModStr, "End Enum") - (InStr(1, ModStr, "Enum " & EnumName) + Len("Enum " & EnumName)))
EnumStr = Split(ModStr, vbCrLf)
For i = LBound(EnumStr) To UBound(EnumStr)
If Trim(Right(EnumStr(i), Len(EnumStr(i)) - InStr(1, EnumStr(i), "="))) = EnumNum Then
FindEnumString = Trim(Left(EnumStr(i), InStr(1, EnumStr(i), "=") - 1))
End If
Next i
End Function
Public Function test()
Dim En As String
En = EnumTest.c
Debug.Print En & " (" & FindEnumString(En, "EnumTest") & ")"
End Function
