Der frühere Tipp UDT - Benutzerdefinierte Datentypen vergleichen zeigt, wie zwei UDTs auf Gleichheit getestet werden können. Einfacher geht es so: ' Benötigte Api-Funktion: Private Declare Function CompareMemory Lib "ntdll.dll" _ Alias "RtlCompareMemory" ( _ ByRef Source1 As Any, _ ByRef Source2 As Any, _ ByVal Length As Long) As Long ' Code: If CompareMemory(UDT1, UDT2, LenB(UDT1)) = LenB(UDT1) Then MsgBox "Gleich" Else MsgBox "Ungleich" End If Ja, das war's auch schon. Auch hier gilt die Einschränkung, dass bei Strings nur feste Längen zulässig sind. Übrigens: Der im Link genannte Tipp verwendet Len() zur Ermittlung der Anzahl der Bytes des UDT. Das ist nicht korrekt, LenB() ist richtig. Der Bytebedarf einer Variablen im UDT wird intern auf eine durch 4 teilbare Zahl aufgerundet. Dadurch entstehen, nach aussen nicht sichtbar, leere Bytes zwischen den Variablen, die mit LenB() berücksichtigt werden. Len() gibt dagegen nur den Bytebedarf der Variablentypen aus. |