Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Eingabe, Prüfung bzw. Umwandlung in HEX-Werte

Eingabe, Prüfung bzw. Umwandlung in HEX-Werte
Annja
Hallo Excel-Spezialisten,
ich habe ein VBA-Problem und hoffe dass mir dabei jemand weiterhelfen kann.
Ich habe eine Parameterdatei in der verschiedene Werte für die weitere Verarbeitung eingetragen werden sollen. Es gibt verschiedene Eingabe-Formate, die an anderer Stelle bereits definiert sind.
https://www.herber.de/bbs/user/69863.xls
Bei der Eingabe von HEX-Werten habe ich aber ein Problem bei der Übertragung der Excel Funktionalität nach VBA. Ich arbeite mit Worksheet_Change um nach der Eingabe den Wert zu überprüfen bzw. umzuwandeln.
In Spalte B ist die Funktionalität die ich brauche vorhanden. Ich bekomme sie aber nicht nach VBA (INDIREKT)
Weis jemand wie ich das umsetzen muss ?
Danke schon mal im Voraus
Gruß Annja
Anzeige
AW: Eingabe, Prüfung bzw. Umwandlung in HEX-Werte
03.06.2010 10:40:06
xr8k2
Hallo Annja,
versteh nicht ganz ... aber geh ich recht in der Annahme, dass du Werte in Spalte A in Hexwerte umwandeln willst, solange´s noch keine sind? Wenn ja, könnte man´s vielleicht in etwa so lösen:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not  Target.Column = 1 Then Exit Sub
Application.EnableEvents = False
If Left(Target, 2) = "0x" Then
' Eingabe ist bereits HEX
If Not UCase(Mid(Target, 3)) = Hex(Val("&H" & Mid(Target, 3))) Then _
Target = Target & " => NO HEX"
Else
' Eingabe ist dezimal
If IsNumeric(Target) Then Target = "0x" & Hex(Target) Else _
Target = Target & " => NO DEC"
End If
Application.EnableEvents = True
End Sub
Gruß,
xr8k2
Anzeige
AW: Eingabe, Prüfung bzw. Umwandlung in HEX-Werte
03.06.2010 11:24:42
Annja
Hallo xr8k2,
ja genau, das ist es.
Funktioniert prima, Vielen Dank !!
Gruß
Annja
AW: Eingabe, Prüfung bzw. Umwandlung in HEX-Werte
03.06.2010 11:41:33
Annja
Hallo xr8k2,
kann ich das dann noch auf eine feste Anzahl von Ziffern formatieren, d.h. aus 0x3F45 wird dann z.B. 0x00003F45 (= 8 Ziffern) ?
Gruß,
Annja
AW: Eingabe, Prüfung bzw. Umwandlung in HEX-Werte
03.06.2010 12:03:44
xr8k2
Hallo Annja,
hm ...

Else
' Eingabe ist dezimal
If IsNumeric(Target) Then _
Target = "0x" & Replace(Format(Hex(Target), "@@@@@@@@"), " ", "0") Else _
Target = Target & " => NO DEC"
scheint mir umständlich aber was besseres fällt mir auf die Schnelle nicht ein.
Gruß,
xr8k2
PS: Vergiss nicht auch die HEX-Prüfung bei bereits vorhandenen HEX-Zahlen auf das Format anzupassen ;-)
Anzeige
AW: Eingabe, Prüfung bzw. Umwandlung in HEX-Werte
03.06.2010 13:40:04
Annja
Hallo xr8k2,
HEX-Prüfung habe ich auch angepaßt.
Super, Danke, jetzt sieht's auch noch gut aus :-)
Gruß,
Annja
;
Anzeige
Anzeige

Infobox / Tutorial

HEX-Werte in Excel eingeben und umwandeln


Schritt-für-Schritt-Anleitung

Um in Excel hexadezimale Werte korrekt einzugeben und zu verarbeiten, kannst du die folgende VBA-Lösung nutzen:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Doppelklicke auf das Arbeitsblatt, in dem du die Werte umwandeln möchtest (z.B. "Tabelle1").

  3. Füge den folgenden Code ein:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
       If Not Target.Column = 1 Then Exit Sub
       Application.EnableEvents = False
       If Left(Target, 2) = "0x" Then
           ' Eingabe ist bereits HEX
           If Not UCase(Mid(Target, 3)) = Hex(Val("&H" & Mid(Target, 3))) Then _
               Target = Target & " => NO HEX"
       Else
           ' Eingabe ist dezimal
           If IsNumeric(Target) Then _
               Target = "0x" & Hex(Target) Else _
               Target = Target & " => NO DEC"
       End If
       Application.EnableEvents = True
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Gib in Spalte A eine Zahl ein, um sie automatisch in das hexadezimale Format umzuwandeln.


Häufige Fehler und Lösungen

  • Problem: Die Eingabe wird nicht als HEX erkannt.

    • Lösung: Stelle sicher, dass du die Eingabe mit dem Präfix 0x beginnst, wenn du bereits HEX-Werte eingibst.
  • Problem: Fehlermeldung bei numerischen Eingaben.

    • Lösung: Überprüfe, ob die Eingabe tatsächlich eine Zahl ist. Nur numerische Werte werden umgewandelt.

Alternative Methoden

Falls du keine VBA-Lösungen nutzen möchtest, kannst du auch die Excel-Funktion DEC2HEX verwenden, um dezimale Werte in hexadezimale Werte umzuwandeln. Beispiel:

=DEC2HEX(A1)

Diese Formel wandelt den Wert in Zelle A1 in ein hexadezimales Format um. Beachte, dass du das Excel-Format hexadezimal verwenden musst, um die Ergebnisse korrekt anzuzeigen.


Praktische Beispiele

  1. Eingabe von HEX-Werten:

    • Gib in Zelle A1 255 ein. Der Code wandelt dies automatisch in 0xFF um.
  2. Eingabe eines bereits bestehenden HEX-Werts:

    • Gib in Zelle A2 0x3F ein. Der Code gibt 0x3F => NO HEX zurück, wenn der Wert nicht dem HEX-Format entspricht.
  3. Formatierung auf feste Ziffern:

    • Um eine feste Anzahl von Ziffern (z.B. 8 Ziffern) zu erreichen, kannst du den folgenden Code anpassen:
    Else
       ' Eingabe ist dezimal
       If IsNumeric(Target) Then _
           Target = "0x" & Replace(Format(Hex(Target), "@@@@@@@@"), " ", "0") Else _
           Target = Target & " => NO DEC"

Tipps für Profis

  • Achte darauf, die Application.EnableEvents-Eigenschaft zu deaktivieren, um unerwünschte Schleifen zu vermeiden.
  • Teste die Umwandlung mit verschiedenen Zahlen und HEX-Formaten, um sicherzustellen, dass dein Code robust ist.
  • Nutze die Excel-Funktionalität zur Überprüfung von HEX-Werten, um sicherzustellen, dass die Eingaben korrekt sind.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine HEX-Werte immer 8 Ziffern haben? Verwende die angepasste Formatierung im VBA-Code, um die Anzahl der Ziffern festzulegen.

2. Was passiert, wenn ich einen nicht-numerischen Wert eingebe? Der Code gibt den Hinweis => NO DEC zurück, wenn der Wert nicht umgewandelt werden kann.

3. Kann ich auch negative Zahlen in HEX umwandeln? Die Umwandlung von negativen Zahlen in HEX kann kompliziert sein. Du solltest sicherstellen, dass nur positive Werte verarbeitet werden, um unerwartete Ergebnisse zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige