Hallo,
Es scheint sich hier generell etwas geändert zu haben, ohne dass die Änderung in den Release Notes dokumentiert wurde 
Ab der Version 7 gibt es das Dynproperty "UserGroupsImExpo" nicht länger, stattdessen gibt es das Dynproperty "UserGroupsOrderImExpo", was allerdings nicht den gleichen String zurück gibt.
Version 6.51:
debug.Print MyUser.DynProperties("UserGroupsImExpo")
dreissig;1;zwei;
Version 7.00:
debug.Print MyUser.DynProperties("UserGroupsOrderImExpo")
dreissig|0;1|0;zwei|0;
Der Teilstring "|0" gibt in der Version 7 die Position des Benutzers in der Liste der Benutzer für die Benutzergruppe an (relevant für Message Control wenn eine Nachricht an eine Gruppe gesendet wird)
Die Funktion "CheckUserLevel" lässt sich entsprechend erweitern, damit der String zugeschnitten wird.
So funktioniert es bei mir auch in der Version 7:
'this function checks if the current user has the proper rights to operate the clicked element
Public Function CheckUserLevel(ByVal UserLevel As Integer) As Boolean
Dim i
Dim MyUser As User
Dim Groups
Dim GroupString As String
Set MyUser = thisProject.Passwords.ItemUser(thisProject.Passwords.LoggedUser)
If Not MyUser Is Nothing Then
Groups = Split(MyUser.DynProperties("UserGroupsOrderImExpo"), ";")
Select Case UserLevel
Case 0 To 30
CheckUserLevel = CBool(MyUser.Level And 2 ^ UserLevel)
If Not CheckUserLevel Then
For i = 0 To UBound(Groups) - 1
GroupString = CStr(Groups(i))
GroupString = Left(GroupString, (InStrRev(GroupString, "|") - 1))
CheckUserLevel = CBool(thisProject.Passwords.ItemUserGroup(GroupString).DynProperties("UserGroupLevel0") And 2 ^ UserLevel)
If CheckUserLevel Then Exit For
Next i
End If
Case 31
CheckUserLevel = CBool(MyUser.Level < 0)
If Not CheckUserLevel Then
For i = 0 To UBound(Groups) - 1
GroupString = CStr(Groups(i))
GroupString = Left(GroupString, (InStrRev(GroupString, "|") - 1))
CheckUserLevel = CBool(CLng(thisProject.Passwords.ItemUserGroup(GroupString).DynProperties("UserGroupLevel0")) < 0)
If CheckUserLevel Then Exit For
Next i
End If
Case 32 To 62
CheckUserLevel = CBool(MyUser.Level1 And 2 ^ (UserLevel - 32))
If Not CheckUserLevel Then
For i = 0 To UBound(Groups) - 1
GroupString = CStr(Groups(i))
GroupString = Left(GroupString, (InStrRev(GroupString, "|") - 1))
CheckUserLevel = CBool(thisProject.Passwords.ItemUserGroup(GroupString).DynProperties("UserGroupLevel1") And 2 ^ (UserLevel - 32))
If CheckUserLevel Then Exit For
Next i
End If
Case 63
CheckUserLevel = CBool(MyUser.Level1 < 0)
If Not CheckUserLevel Then
For i = 0 To UBound(Groups) - 1
GroupString = CStr(Groups(i))
GroupString = Left(GroupString, (InStrRev(GroupString, "|") - 1))
CheckUserLevel = CBool(CLng(thisProject.Passwords.ItemUserGroup(GroupString).DynProperties("UserGroupLevel1")) < 0)
If CheckUserLevel Then Exit For
Next i
End If
Case 64 To 94
CheckUserLevel = CBool(MyUser.Level2 And 2 ^ (UserLevel - 64))
If Not CheckUserLevel Then
For i = 0 To UBound(Groups) - 1
GroupString = CStr(Groups(i))
GroupString = Left(GroupString, (InStrRev(GroupString, "|") - 1))
CheckUserLevel = CBool(thisProject.Passwords.ItemUserGroup(GroupString).DynProperties("UserGroupLevel2") And 2 ^ (UserLevel - 64))
If CheckUserLevel Then Exit For
Next i
End If
Case 95
CheckUserLevel = CBool(MyUser.Level2 < 0)
If Not CheckUserLevel Then
For i = 0 To UBound(Groups) - 1
GroupString = CStr(Groups(i))
GroupString = Left(GroupString, (InStrRev(GroupString, "|") - 1))
CheckUserLevel = CBool(CLng(thisProject.Passwords.ItemUserGroup(GroupString).DynProperties("UserGroupLevel2")) > 0)
If CheckUserLevel Then Exit For
Next i
End If
Case 96 To 126
CheckUserLevel = CBool(MyUser.Level3 And 2 ^ (UserLevel - 96))
If Not CheckUserLevel Then
For i = 0 To UBound(Groups) - 1
GroupString = CStr(Groups(i))
GroupString = Left(GroupString, (InStrRev(GroupString, "|") - 1))
CheckUserLevel = CBool(thisProject.Passwords.ItemUserGroup(GroupString).DynProperties("UserGroupLevel3") And 2 ^ (UserLevel - 96))
If CheckUserLevel Then Exit For
Next i
End If
Case 127
CheckUserLevel = CBool(MyUser.Level3 < 0)
If Not CheckUserLevel Then
For i = 0 To UBound(Groups) - 1
GroupString = CStr(Groups(i))
GroupString = Left(GroupString, (InStrRev(GroupString, "|") - 1))
CheckUserLevel = CBool(CLng(thisProject.Passwords.ItemUserGroup(GroupString).DynProperties("UserGroupLevel3")) > 0)
If CheckUserLevel Then Exit For
Next i
End If
End Select
End If
End Function