Learning MicroStation VBA

Levels are so important to the organization of a design file that an interface is provided just for Level events.
The ILevelChangeEvents interface exposes only one event which handles these twelve types of changes:
AfterChangeActive
AfterCreate
AfterDelete
BeforeChangeActive
BeforeDelete
ChangeAttribute
ChangeCode
ChangeDisplay
ChangeName
ChangeName
ChangeParent
TableRedo
TableUndo
Although the change type names are self-explanatory, we had better look at the actual event before continuing.
Private Sub ILevelChangeEvents_LevelChanged( _ ByVal ChangeType As MsdLevelChangeType, _ ByVal TheLevel As Level, _ ByVal TheModel As ModelReference) End Sub
Three parameters are passed to us in the LevelChanged event. The first gives us the type of change. This is provided in the form of an enumeration constant. Values for the ChangeType parameter are:
MsdLevelChangeType.msdLevelChangeAfterChangeActive = 9MsdLevelChangeType.msdLevelChangeAfterCreate = 2MsdLevelChangeType.msdLevelChangeAfterDelete = 3MsdLevelChangeType.msdLevelChangeBeforeChangeActive = 17MsdLevelChangeType.msdLevelChangeBeforeDelete = 18MsdLevelChangeType.msdLevelChangeChangeAttribute = 8MsdLevelChangeType.msdLevelChangeChangeCode = 5MsdLevelChangeType.msdLevelChangeChangeDisplay = 7MsdLevelChangeType.msdLevelChangeChangeName = 4MsdLevelChangeType.msdLevelChangeChangeParent = 6MsdLevelChangeType.msdLevelChangeTableRedo = 15MsdLevelChangeType.msdLevelChangeTableUndo = 14<a name="955"></a><a name="beginpage.981473AD-88F1-4889-AECE-961CF675C3BF"></a>
Let's begin by using a function to convert the constant provided to a string and a simple Debug.Print statement. This allows us to implement the interface and experiment with it to see when and how Level events are handled.
Implements ILevelChangeEvents'before change active shows the old level name Private Sub ILevelChangeEvents_LevelChanged( _ ByVal ChangeType As MsdLevelChangeType, _ ByVal TheLevel As...