2-Byte-Integer mit Vorzeichen

Hallo Experten,

ich habe 2 Bytes (Lo 96, Hi 240), die ich in eine Integer-Zahl mit Vorzeichen umrechnen möchten. Es soll also „-4000“ als Ergebnis herauskommen.

Wie kann ich das in VBA realisieren ohne viel IF-THEN-Gemurkse.

Vielen Dank
Martin

Hallo Martin,

ich habe 2 Bytes (Lo 96, Hi 240), die ich in eine Integer-Zahl
mit Vorzeichen umrechnen möchten. Es soll also „-4000“ als
Ergebnis herauskommen.

Wie kann ich das in VBA realisieren ohne viel
IF-THEN-Gemurkse.

die Bytes aus einem Bytearray in eine Integervariable kopieren.

Vorsicht! Der Code ist nur mit dem Notepad geschrieben, ungetestet!
(Sollte aber laufen. :smile:)

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" \_
 Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, \_
 ByVal ByteLen As Long)


Private Sub Command1\_Click()
 Dim V1 As Integer
 Dim V2(1) As Byte
 V2(0) = 96
 V2(1) = 240
 CopyMemory ByVal VarPtr(V1), V2(0), 2
End Sub

Gruß Rainer

Hi Martin,

Moment! Du schreibst ja VBA. Da war doch etwas …
Wenn das VBA ‚VarPtr‘ nicht kennt, sind zwei Arrays nötig.

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" \_
 Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, \_
 ByVal ByteLen As Long)


Private Sub Command1\_Click()
 Dim V1(0) As Integer
 Dim V2(1) As Byte
 V2(0) = 96
 V2(1) = 240
 CopyMemory V1(0), V2(0), 2
End Sub

Das muss auch in VBA ohne Problem laufen.

Gruß Rainer

p = (hi > 127) * (256 * (256 - hi) - lo) + (hi

Hi,

Kann man sich selbst Sternchen geben? :wink:)

nein, aber ich kann. :smile:

Gruß Rainer