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

Diverse Zahlensysteme mit VBa umrechnen

Forumthread: Diverse Zahlensysteme mit VBa umrechnen

Diverse Zahlensysteme mit VBa umrechnen
21.05.2020 11:27:59
Mike
Hallo liebe Forums Gemeinde.
Ich leide unter vielfältigen Problemen und hoffe bei euch Hilfe zu finden. Ich programmiere VBA seit ca 5 Wochen und bin absoluter Amateur. Ich versuche folgende Aufgaben zu lösen.
1. Ein Programm das die Eingabe von Dezimalzahlen ermöglicht und danach die umgerechnete Binärzahl ausgibt ( Variabeln Deklaration mit dem Typ Long)
2. Ein Programm das die Eingabe von Binärzahlen ermöglicht und danach die umgerechnete Dezimalzahl ausgbit ( Variabeln Deklaration mit dem Typ Long)
3. Ein Programm das die Eingabe von Dezimalzahlen ermöglicht und danach die umgerechnete Binärzahl ausgibt ( Variabeln Deklaration mit dem Typ String)
4. Ein Programm das die Eingabe von Binärzahlen ermöglicht und danach die umgerechnete Dezimalzahl ausgbit ( Variabeln Deklaration mit dem Typ String)
Zu zwei habe ich folgende funktionierende Lösung ;
Option Explicit

Sub dual2dez()
Dim bin, dez As Long
Dim e As Integer
bin = InputBox("Eingabe Binärzahl")
e = 0
Do While bin > 0
dez = dez + (bin Mod 10) * 2 ^ e
e = e + 1
bin = bin / 10
Loop
MsgBox (dez)
End Sub

Im Rahmen der ersten Aufgabe ist mir nicht direkt offensichtlich wie ich das Programm ändern muss um die Umrechnung durchzuführen.
Bei Aufgabe 3 bzw. 4 soll mit dem Typen String gerechnet werden

Sub Dez2Dual()
Dim dez As String    'dezimalteil
Dim bin As String     'binärteil
Dim e As Integer
führt allerding zu einem Fehler 13 Typen unverträglichkeit
LG aus Dortmund



		
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Base36
21.05.2020 13:33:57
Fennek
Hallo,
zu deiner Frage:
sieh dir die Umrechnungsfunktionen des Arbeitsblattes an und nutze diese in VBA mit "Worksheetfunction.xxx"
Interessant ist ein Zahlensystem zur Basis36: Damit können Texte in Zahlen umgerechnet werden uund zurück:
Im Arbeitsblatt:

in D6:
APRIL	17998221	=DEZIMAL(D6;36)
APRIL		=BASIS(E6;36)
mfg
Anzeige
AW: Diverse Zahlensysteme mit VBa umrechnen
21.05.2020 14:10:27
volti
Hallo Mike,
noch eine Idee:

Function Bin2Dez(ByVal sBin As String) As Long
'Umwandlung Binär in Dezimal
 Dim l As Long
 For l = 0 To (Len(sBin) - 1)
   Bin2Dez = Bin2Dez + CLng(Mid$(sBin, Len(sBin) - l, 1)) * (2 ^ l)
 Next l
End Function
Function Dez2Bin(ByVal dDez As Long) As String
'Umwandlung Dezimal in Binär
 Do
   Dez2Bin = dDez Mod 2 & Dez2Bin
   dDez = dDez \ 2
 Loop Until dDez < 1
End Function
Sub Test1()
 MsgBox Bin2Dez(InputBox("Bitte Binärzahl eingeben!", "Umrechnung"))
End Sub
Sub Test2()
 MsgBox Dez2Bin(Val(InputBox("Bitte Dezimalzahl eingeben!", "Umrechnung")))
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Diverse Zahlensysteme mit VBa umrechnen
21.05.2020 19:06:01
Mike
Hi, Bernd leider kann ich den Link nicht öffnen.
Rechtsclick Link in neuem Tab oeffnen owT
22.05.2020 13:30:30
Charly
;
Anzeige

Infobox / Tutorial

Diverse Zahlensysteme mit VBA umrechnen


Schritt-für-Schritt-Anleitung

Um verschiedene Zahlensysteme mit VBA umzurechnen, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu: Rechtsklicke im Projektfenster und wähle „Einfügen“ > „Modul“.
  3. Kopiere den folgenden Code in das Modul, um die Umrechnung von Binär zu Dezimal und umgekehrt zu ermöglichen:
Function Bin2Dez(ByVal sBin As String) As Long
    Dim l As Long
    For l = 0 To (Len(sBin) - 1)
        Bin2Dez = Bin2Dez + CLng(Mid$(sBin, Len(sBin) - l, 1)) * (2 ^ l)
    Next l
End Function

Function Dez2Bin(ByVal dDez As Long) As String
    Do
        Dez2Bin = dDez Mod 2 & Dez2Bin
        dDez = dDez \ 2
    Loop Until dDez < 1
End Function
  1. Teste die Funktionen mit den folgenden Subroutinen:
Sub Test1()
    MsgBox Bin2Dez(InputBox("Bitte Binärzahl eingeben!", "Umrechnung"))
End Sub

Sub Test2()
    MsgBox Dez2Bin(Val(InputBox("Bitte Dezimalzahl eingeben!", "Umrechnung")))
End Sub
  1. Führe die Tests aus, indem du die Subroutinen Test1 oder Test2 im VBA-Editor startest.

Häufige Fehler und Lösungen

  • Fehler 13: Typen unverträglich: Dieser Fehler tritt auf, wenn du versuchst, einen Wert vom Typ String in einen Long zu konvertieren, ohne sicherzustellen, dass der Wert tatsächlich eine Zahl ist. Überprüfe die Eingaben in den InputBox-Funktionen.

  • Falsche Rückgabewerte: Stelle sicher, dass die Eingabe der Binärzahlen nur aus 0 und 1 besteht, da andere Zeichen zu unerwartetem Verhalten führen können.


Alternative Methoden

Eine alternative Methode zur Umrechnung von Zahlensystemen ist die Verwendung von Excel-Formeln. Du kannst die Funktionen DEZIMAL und BASIS direkt in Excel verwenden:

  • Um eine Binärzahl in Dezimal umzuwandeln, kannst du die folgende Formel verwenden:

    =DEZIMAL(A1; 2)

    Dabei steht A1 für die Zelle, die die Binärzahl enthält.

  • Um eine Dezimalzahl in eine Binärzahl umzuwandeln, benutze:

    =BASIS(A1; 2)

Praktische Beispiele

Hier sind einige Beispiele für die Nutzung der VBA-Funktionen:

  • Beispiel 1: Um die Binärzahl 1010 in Dezimal umzuwandeln:

    MsgBox Bin2Dez("1010") ' Gibt 10 zurück
  • Beispiel 2: Um die Dezimalzahl 10 in Binär umzuwandeln:

    MsgBox Dez2Bin(10) ' Gibt "1010" zurück

Mit diesen Beispielen kannst du das Umrechnen von Zahlensystemen effektiv in Excel umsetzen.


Tipps für Profis

  • Verwende WorksheetFunction: Du kannst die eingebauten Excel-Funktionen in deinem VBA-Code nutzen, um die Umrechnung zu vereinfachen. Zum Beispiel:

    Dim dezimal As Long
    dezimal = Application.WorksheetFunction.Decimal(YourBinaryValue, 2)
  • Error Handling: Implementiere eine Fehlerbehandlung in deinem VBA-Code, um ungültige Eingaben abzufangen und dem Benutzer hilfreiche Fehlermeldungen zu geben.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Zahlensysteme umrechnen?
Du kannst die oben genannten Funktionen erweitern oder zusätzliche Funktionen für andere Zahlensysteme wie Hexadezimal oder Oktal erstellen.

2. Funktioniert dies in allen Excel-Versionen?
Ja, die oben beschriebenen Methoden sollten in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen.

3. Kann ich die Umrechnung von Zahlensystemen auch ohne VBA durchführen?
Ja, du kannst Excel-Formeln wie DEZIMAL und BASIS verwenden, um Zahlensysteme umzurechnen, ohne VBA zu nutzen.

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