Die Division ist im Rahmen der bekannten Zahlengrößen in VB und VBA kein Problem. Mit dem Zeichen '/' kann eine Division durchgeführt werden. Was aber, wenn man eine 24-stelige Zahl teilen möchte? Bisher ist mir noch keine Funktion bekannt, mit der man so etwas bewerkstelligen könnte. Da gibt es aber doch etwas. Damals in der Schule, als wir das Teilen gelernt haben, war das ein System, mit dem beliebig lange Zahlen geteilt werden konnten. Beschreibung des Ablaufes: Beispiel für Übergabevariablen: TxtZahl = "123123120001212123131400" Divisor = 97 Das Ergebnis: Division = "1269310515476413640529 87"
Die Ziffern bis zum Leerzeichen beinhalten das ganzzahlige Ergebnis, die Ziffern nach dem Leerzeichen beinhalten den Rest der Division. Erstellen Sie ein neues Projekt mit eine Form und folgenden Controls:
Fügen Sie nachfolgenden Code in den Codeteil der Form ein: Private Sub Form_Load() txtZahl.Text = "123123120001212123131400" txtDiv.Text = "97" txtResult.Text = "" txtResult.FontName = "FixedSys" End Sub Private Sub Command1_Click() Division txtZahl.Text, Val(txtDiv.Text) End Sub Function Division(txtZahl As String, Divisor As Long) As String ' Variabeln deklarieren Dim TeilStart As Integer Dim TeilEnd As Integer Dim TxtLen As Integer Dim Erg As Long Dim Ganz As Long Dim Rest As Long Dim Nr As Long Dim TxtErg As String Dim TxtRest As String Dim TxtAusg As String Dim TxtStart As String Dim TxtGanz As String Dim Teil As String ' sämtliche Variablen initialisieren TeilStart = 1 TeilEnd = 1 TxtLen = Len(txtZahl) TxtErg = "" TxtRest = "" TxtAusg = "" TxtStart = TeilStart ' Hauptschleife der Division While TeilEnd <= TxtLen ' ermitteln des zu berechnenden Teilstrings Teil = TxtRest + Mid$(txtZahl, TeilStart, TeilEnd - TeilStart + 1) ' Wenn der Teil größer ist als der Divisor If Val(Teil) >= Divisor Then ' Ergebnis der Teildivision Erg = Val(Teil) \ Divisor Ganz = Erg * Divisor Rest = Val(Teil) - Ganz TxtGanz = Trim(Str(Ganz)) ' Bereich für die Ausgabe in die TextBox If TxtErg <> "" Then TxtAusg = TxtAusg + Space$(TxtStart - Len(Teil)) + Trim(Teil) + vbCrLf TxtGanz = Space$(Len(Teil) - Len(TxtGanz)) + TxtGanz TxtAusg = TxtAusg + Space$(TxtStart - Len(Teil)) + TxtGanz + vbCrLf TxtAusg = TxtAusg + Space$(TxtStart - Len(Teil)) + String(Len(Teil), "-") + vbCrLf Else If Len(TxtErg) > 1 Then TxtAusg = TxtAusg + Space$(TxtStart - Len(Teil)) + Trim(Teil) + vbCrLf End If TxtGanz = Space$(Len(Teil) - Len(TxtGanz)) + TxtGanz TxtAusg = TxtAusg + Space$(TxtStart - 1) + TxtGanz + vbCrLf TxtAusg = TxtAusg + Space$(TxtStart - 1) + String(Len(Teil), "-") + vbCrLf End If ' Berechnete Werte in Variabeln speichern TxtErg = TxtErg + Trim(Str(Erg)) TxtRest = Trim(Str(Rest)) TeilStart = TeilEnd + 1 TeilEnd = TeilStart ' Bereich für die Ausgabe in die Textbox TxtStart = TeilStart Else ' Bereich, wenn der Divisor größer ist als der zu berechnende Teil If TxtErg <> "" Then TxtErg = TxtErg + "0" ' Bereich für die Ausgabe in die TextBox If Rest = 0 And TxtRest <> "" Then TxtAusg = TxtAusg + Space$(TxtStart - Len(Teil)) + Trim(TxtRest) + vbCrLf TxtRest = "" End If TxtStart = TxtStart + 1 End If TeilEnd = TeilEnd + 1 End If Wend ' Bereich für die Ausgabe in die TextBox If TxtRest <> "" Then TxtAusg = TxtAusg + Space$(TeilStart - Len(Teil)) + Trim(TxtRest) + vbCrLf TxtAusg = txtZahl + " :" + Str(Divisor) + " = " + TxtErg + " Rest " + TxtRest + vbCrLf + TxtAusg txtResult.Text = TxtAusg ' Übergabe des Ergebnis an die Funktion Division = TxtErg + " " + TxtRest Exit Function Ende: Close Nr Division = "" End Function Das Ergebnis der MultiLine-TextBox sieht aus, wie eine auf dem Papier durchgeführte Division. / Beispieltext 123123120001212123131400 : 97 = 1269310515476413640529 Rest 87 97 --- 261 194 --- 672 582 --- 903 873 --- 301 291 --- 102 97 --- 500 485 --- 150 97 --- 531 485 --- 462 388 --- 741 679 --- 622 582 --- 401 388 --- 132 97 --- 353 291 --- 621 582 --- 393 388 --- 514 485 --- 290 194 --- 960 873 --- 87 / Ende Beispieltext Dieser Tipp wurde bereits 14.537 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |