VB Funktionen
Hallo,
da ich kein wirkliches VB Ass bin brauch ich mal hilfe. Ich suche VB Funktionen die einen Wert von Dezimal in Dual, Dual in Dezimal und Hex in Dezimal umrechen. Habe schon die Funktion Hex gefunden, die ja dezimal in hex umrechnet.
Hoffe ihr könnt mir weiterhelfen.
Vielen Dank im Voraus
da ich kein wirkliches VB Ass bin brauch ich mal hilfe. Ich suche VB Funktionen die einen Wert von Dezimal in Dual, Dual in Dezimal und Hex in Dezimal umrechen. Habe schon die Funktion Hex gefunden, die ja dezimal in hex umrechnet.
Hoffe ihr könnt mir weiterhelfen.
Vielen Dank im Voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 74337
Url: https://administrator.de/forum/vb-funktionen-74337.html
Ausgedruckt am: 12.04.2025 um 21:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo Andy1987 und willkommen im Forum!
Für Dual-(Binär-)Umwandlung siehe zB http://www.vb-helper.com/howto_decimal_to_binary.html
Um Hex umzuwandeln genügt eigentlich
Grüße
Bastla
Für Dual-(Binär-)Umwandlung siehe zB http://www.vb-helper.com/howto_decimal_to_binary.html
Um Hex umzuwandeln genügt eigentlich
1
2
2
H = "FCB3"
D = CLng("&H" & H)
Grüße
Bastla
Hallo Andy1987!
Zwei Anmerkungen vorweg:
- Selbst wenn's in diesem Fall vielleicht auch ohne geht: Könntest Du Deine Fragen in Zukunft um so nebensächliche Details, wie etwa die VB-Version oder (hier) den exakten Inhalt des Textfeldes (zB "-14,8" vs "-14.8") ergänzen?
- Die eben gestellte Frage passt zwar noch gerade so unter die Threadüberschrift (aber nur weil diese eigentlich zu allgemein gehalten ist) - da (behaupte ich mal
) die Forumsdatenbank ohne weiteres noch den einen oder anderen zusätzlichen Beitrag verkraftet, bitte aber beim nächsten Thema einen neuen Thread eröffnen.
Wenn Du die Typkonversion Text --> Zahl per Val() machen möchtest, müsstest Du als Dezimaltrennzeichen einen "." verwenden - unabhängig von der Systemsprache. Auch das Vorzeichen der umzuwandelnden Zahl dürfte keine Rolle spielen - das Wegfallen der Dezimalstellen aufgrund eines Trennzeichens "," müsste eigentlich auch bei positiven Zahlen auftreten. Hintergrund: Val() versucht "mit Gewalt", aus dem Text eine Zahl zu machen und verwendet daher so viele Zeichen (von links) wie möglich - wenn Du als Dezimaltrennzeichen ein "," eingegeben hast, kann Val() an dieser Stelle aber nicht mehr fortsetzen und gibt eben den bis dahin "zahlenartigen" Teil des Textes aus.
Gelingen sollte die Umwandlung mit
Allerdings reagieren die CXxx-Funktionen bei Weitem nicht so gelassen wie Val() - wenn daher keine Zahl im Textfeld steht, erntest Du einen Error 13 ("Type mismatch). Vorbeugend solltest Du den Text daher behandeln / überprüfen:
OK, an der Fehlermeldung musst Du vielleicht noch etwas feilen ... 
Grüße
bastla
[Edit]
@Biber

@Andy1987
Wie sich beim Test mit Biber's Beispiel unten zusätzlich zeigt, ist noch nicht einmal auf IsNumeric() Verlass (zumindest hinsichtlich des ".") - daher noch eine Ergänzung in meinem obigen Codebeispiel, um zumindest diese Fehlerquelle auszuschalten: Alle enthaltenen "." werden vorweg in "," umgewandelt.
Hoffentlich verwendest Du kein VB 5 - das kennt "Replace()" noch nicht.
Für den Fall des Falles: http://www.vbarchiv.net/archiv/tipp_details.php?pid=99
[/Edit]
Zwei Anmerkungen vorweg:
- Selbst wenn's in diesem Fall vielleicht auch ohne geht: Könntest Du Deine Fragen in Zukunft um so nebensächliche Details, wie etwa die VB-Version oder (hier) den exakten Inhalt des Textfeldes (zB "-14,8" vs "-14.8") ergänzen?
- Die eben gestellte Frage passt zwar noch gerade so unter die Threadüberschrift (aber nur weil diese eigentlich zu allgemein gehalten ist) - da (behaupte ich mal
Wenn Du die Typkonversion Text --> Zahl per Val() machen möchtest, müsstest Du als Dezimaltrennzeichen einen "." verwenden - unabhängig von der Systemsprache. Auch das Vorzeichen der umzuwandelnden Zahl dürfte keine Rolle spielen - das Wegfallen der Dezimalstellen aufgrund eines Trennzeichens "," müsste eigentlich auch bei positiven Zahlen auftreten. Hintergrund: Val() versucht "mit Gewalt", aus dem Text eine Zahl zu machen und verwendet daher so viele Zeichen (von links) wie möglich - wenn Du als Dezimaltrennzeichen ein "," eingegeben hast, kann Val() an dieser Stelle aber nicht mehr fortsetzen und gibt eben den bis dahin "zahlenartigen" Teil des Textes aus.
Gelingen sollte die Umwandlung mit
1
Zahl = CDbl(Textfeld.Text)
1
2
3
4
5
6
2
3
4
5
6
Text = Replace(Textfeld.Text, ".", ",")
If IsNumeric(Text) Then
Zahl = CDbl(Text)
Else
MsgBox "So nicht - gib mir eine Zahl!", vbCritical
End If
Grüße
bastla
[Edit]
@Biber
Sorry, bastla, hatte Dich nicht gesehen...
Kein Wunder, habe ja zuletzt auch mehr als 1,5 kg abgenommen. @Andy1987
Wie sich beim Test mit Biber's Beispiel unten zusätzlich zeigt, ist noch nicht einmal auf IsNumeric() Verlass (zumindest hinsichtlich des ".") - daher noch eine Ergänzung in meinem obigen Codebeispiel, um zumindest diese Fehlerquelle auszuschalten: Alle enthaltenen "." werden vorweg in "," umgewandelt.
Hoffentlich verwendest Du kein VB 5 - das kennt "Replace()" noch nicht.
Für den Fall des Falles: http://www.vbarchiv.net/archiv/tipp_details.php?pid=99
[/Edit]
Moin Andy1987,
in diesem Fall musst Du mit der CDbl-Funktion etwas casten, was zumindest ein Double sein könnte.
Und dabei kommt es manchmal auf Feinheiten der Schreibweise an.
Beispiel (in VBScript, ist aber dieselbe Soße):
Inhalt ToDoubleTrouble.vbs
Ausgabe:
Die Zeilen 2 und 3 liefern das beabsichtigte Ergebnis, Zeile 1 ist die, die Dich ratlos machte.
Grüße
Biber
[Edit] Sorry, bastla, hatte Dich nicht gesehen...
[/Edit]
in diesem Fall musst Du mit der CDbl-Funktion etwas casten, was zumindest ein Double sein könnte.
Und dabei kommt es manchmal auf Feinheiten der Schreibweise an.
Beispiel (in VBScript, ist aber dieselbe Soße):
Inhalt ToDoubleTrouble.vbs
1
2
3
2
3
Wscript.echo cdbl("-6252432.22002287")
Wscript.echo cdbl("-6252432,22002287")
Wscript.echo cdbl("-6252432,22002287") +2432.22
Ausgabe:
1
2
3
4
2
3
4
$cmd$cscript //nologo ToDoubleTrouble.vbs
-625243222002287
-6252432,22002287
-6250000,00002287
Die Zeilen 2 und 3 liefern das beabsichtigte Ergebnis, Zeile 1 ist die, die Dich ratlos machte.
Grüße
Biber
[Edit] Sorry, bastla, hatte Dich nicht gesehen...