Du hast hier 2 Denkfehler und ein Missverständnis eingebaut, André;
1. Die Xl-Funktionen HEXINDEZ und DEZINHEX können nur maximal 10stellige Hexadezimalzahlen verarbeiten bzw erzeugen. Bei den VBA-Funktionen
CLng und
Hex sind es sogar noch 2 Stellen weniger. Diese Längen können durch die hier relevanten Quelldaten überschritten werden!
2. Hier geht's auch nicht um eine hexadezimale Gesamtzahl, bei der die Zeichenzahl ggf irrelevant wäre, sondern um einen
byte-orientierten Code. Auch wenn man hier
byte-weise in Dezimalzahlen umwandeln würde, würde auch eine Produktsumme mit den richtigen 100er-Potenzen nichts bringen, denn aus einem solchen Ergebnis kann man auf einfache Weise nur einen Gesamt-Hex-Zahl-Text bilden,
nicht aber den gewünschten
byte-verkehrten Code. Das ist also ein Irrweg!
3. In den Quelldaten liegen die Hexzahlen in
Bytes (=2Halb
By=2×4
Bits) vor, was üblich ist, denn ein solches
Byte kann 16² Zeichen darstellen. Eine 2stellige Hexzahl entspricht somit
einem Zeichen. Das gleiche Problem tritt beim Umwandeln von BGR- in RGB-Darstellungen auf → BGR=&hA0B0C0 entspräche somit RGB=#C0B0A0. Ein einfaches
StrReverse würde hieraus aber #0C0B0A machen. Das gilt natürlich auch für Dezimalzahlen. Bei deinem Bsp wird so aus 1AFA → 17D0 und weder (falsches) AFA1 noch gewünschtes FA1A. Das hätte dir eigentlich auffallen müssen!
Aus dem allen folgt, dass man nicht ums Drehen der originalen
Byte-Folge herumkommt. Das könnte man vereinfachen, wenn man zuvor den
2-Bytes-Code in einen 1-Doppel-
Byte-Code übersetzt. Dann würde man anstelle von 2×8
Bits aber 1×16
Bits (→1 Doppel-
Byte →256 Binär-, also
alle Ansi/ASCII-Werte) pro dargestelltem Zeichen benötigen, könnte dann aber mit
StrReverse arbeiten. Da würde dann eher was draus, zB so:
Code:
Sub ByReverse()
Dim ix As Long, a$, b$
a = ActiveWindow.RangeSelection.Cells(1).Text
For ix = 1 To Len(a) Step 2
b = b & Chr(CLng("&H" & Mid(a, ix, 2)))
Next ix
a = StrReverse(b): b = ""
For ix = 1 To Len(a)
b = b & Right("0" & Hex(Asc(Mid(a, ix, 1))), 2)
Next ix
MsgBox b
End Sub
Gruß, Castor