Forum: PC-Programmierung Excel VBA - Wert in Hex mit führenden Nullen


von Adam P. (adamap)


Angehängte Dateien:

Lesenswert?

Abend zusammen,

Excel und VBA ist gar nicht mein Bereich, jedoch benötige ich es zur 
Zeit und hab mich heute ein wenig eingelesen, doch die Feinheiten hab 
ich noch net drauf.

Auf folgendes Problem, habe ich noch nichts gefunden:

1)
[Bild: excel.png]
1
Sub dez_to_hex()
2
    Dim x As Byte
3
        
4
    x = Cells(2, 1).Value
5
    Cells(2, 2).Value = Hex(x)
6
End Sub

Ich habe ein Byte.
Nun möchte ich diese Byte in einer Zelle ausgeben, als HEX Wert (mit 
führenden Nullen, hier mit einer 0, also "0A").

Die Ausgabe ansich funktioniert, jedoch bekomme ich die 0 nicht davor.
Habe da leider zuwenig Ahnung von VBA, bzgl. Formatierung und habe auch 
nichts gutes gefunden, was zufriedenstellend wäre.

2)
Wenn ich in dem Excel Dokument ohne VBA das versuche, kann ich das 
nutzen, z.B.:
1
=DEZINHEX(10;2)
Das ergibt 2 Stellen.

Geht das in der VBA Programmierung etwa nicht?

von Jems (Firma: oA) (timobomm)


Lesenswert?

Konnte es aber gerade nicht testen, aber versuch mal

Worksheets("Sheet1").Range("B2").Formula = "="0x"&DEZINHEX(A2;2)"

von Hans-Georg L. (h-g-l)


Lesenswert?

=DEZINHEX(Zahl;Stellen)
  =DEZINHEX(10;8)  -> 0000000A

von Frank O. (fop)


Lesenswert?

Dann programmiers Dir doch :
1
Public Function dez_to_hex(ByVal wert As LongLong, ByVal stellen As Byte) As String
2
    Dim l As Byte
3
    dez_to_hex = Hex(wert)
4
    l = Len(dez_to_hex)
5
    If l < stellen Then dez_to_hex = String$(stellen - l, "0") + dez_to_hex
6
End Function

von Adam P. (adamap)


Lesenswert?

Jems schrieb:
> Worksheets("Sheet1").Range("B2").Formula = "="0x"&DEZINHEX(A2;2)"

Hans-Georg L. schrieb:
> =DEZINHEX(Zahl;Stellen)
>   =DEZINHEX(10;8)  -> 0000000A

Das ist ja das Problem, dass er im Code Editor DEZINHEX nicht kennt.


Frank O. schrieb:
> Public Function dez_to_hex(ByVal wert As LongLong, ByVal stellen As
> Byte) As String
>     Dim l As Byte
>     dez_to_hex = Hex(wert)
>     l = Len(dez_to_hex)
>     If l < stellen Then dez_to_hex = String$(stellen - l, "0") +
> dez_to_hex
> End Function

Das funktioniert, Danke ;)


Trotzdem würde ich gerne wissen, warum ich im Code nicht die gleichen 
"Funktionen" nutzen kann, die man sonst direkt in Excel nutzt?
z.B.:
- DEZINHEX()
- BITRVERSCHIEB()

auch wenn man Bit Shift im Code ja eleganter lösen kann.

: Bearbeitet durch User
von Axel R. (axlr)


Angehängte Dateien:

Lesenswert?

Was es alles gibt.. "BitRverschieb" :) Musste ich gleich mal testen

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Eventuell kennt er ja DECTOHEX im VBA

EDIT: es heißt dann wohl DEC2HEX

: Bearbeitet durch User
von Thomas S. (doschi_)


Lesenswert?

Adam P. schrieb:
...
> Trotzdem würde ich gerne wissen, warum ich im Code nicht die gleichen
> "Funktionen" nutzen kann, die man sonst direkt in Excel nutzt?
> z.B.:
> - DEZINHEX()
> - BITRVERSCHIEB()
>
> auch wenn man Bit Shift im Code ja eleganter lösen kann.

Vermutlich, weil VBA die internationale Schreibweise der Funktionen 
nutzt.
siehe  https://de.excel-translator.de/dezinhex/  oder
https://www.excelfunctions.eu/DEZINHEX/German-English
  --> DEZINHEX (de) wird zu  DEC2HEX (en)
 und BITRVERSCHIEB ->  BITRSHIFT

von Jems (Firma: oA) (timobomm)


Lesenswert?

Hab auch nochmal ausprobiert. Das hier funktioniert:

Worksheets("Tabelle1").Range("B2").Formula = "=""0x""&DEC2HEX(A2,2)"

-> englische Funktionsnamen
-> Trennung der Parameter mit Komma
-> Anführungszeichen doppelt schreiben

von Adam P. (adamap)


Angehängte Dateien:

Lesenswert?

Muss man da irgendwie noch ein Modul einbinden?

Meiner kennt das nicht.
(Office 2013 / VBA 7.1)

siehe Bild.

von Thomas S. (doschi_)


Lesenswert?

Adam P. schrieb:
> Muss man da irgendwie noch ein Modul einbinden?
>
> Meiner kennt das nicht.
> (Office 2013 / VBA 7.1)
>
> siehe Bild.

Großschreibung?

von Adam P. (adamap)


Lesenswert?

Thomas S. schrieb:
> Großschreibung?

Ne, im Drop-Down Menü kommen die dann auch nicht.

Hab aber grad wohl was gefunden.
Konvertierungsfunktionen heißen da wohl anders.

z.B.: String -> HEX
1
Dim str As String
2
Dim x As Byte
3
4
str = Cells(3, zelle + 6).Value
5
x = CByte("&H" & str)

Aber nun läuft alles.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.