ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 06.03.2000

Diese Seite wurde zuletzt aktualisiert am 06.03.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss der AVB-Web-Site zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Rechnen mit Text-Zahlen

Zurück...


Anzeige

Von Martin Szugat mailto:ms_vbaxlformattexttonumber@aboutvb.de

Ein fehlendes Feature ist noch lange kein Bug! So könnte Microsofts Entschuldigung lauten für einen Fehler, nein, für eine fehlende Funktionalität in Excel. Dieses Manko (einigen wir uns auf diesen Begriff) äußert sich, wenn ein Zellbereich als Text formatiert worden ist, später mit Zahlen gefüllt wurde und anschließend versucht wird, Berechnungen - wie zum Beispiel die Berechnung einer Summe - über den Zellbereich auszuführen. Statt einer Summe der Zahlen erhalten Sie Null als Ergebnis. Null ist immerhin mehr als Nichts und zeigt, dass Excel die Zellinhalte nicht als Zahlen interpretiert, sondern (Sie erinnern sich...) als Text. Denn schließlich sind die betroffenen Zellen als Text formatiert. Um dennoch die Summe bilden zu können, sollte es eigentlich ausreichen, die Zellen als "Zahl" oder als "Standard" zu formatieren.

Doch damit werden Sie kein Glück haben. Excel wird als Summe weiterhin Null anzeigen. Erst wenn Sie den Text in der Zelle löschen und anschließend die Zahl neu eintragen, interpretiert Excel den Inhalt der Zelle als numerischen Wert. Der Grund liegt in der Unterscheidung zwischen angezeigtem Text einer Zelle und tatsächlichem Wert einer Zelle. Bei der ersten Formatierung wurde das Anzeigeformat der selektierten Zellen auf "Text" gesetzt. Die anschließend eingetragenen Zahlen speichert Excel intern als Text ab und präsentiert sie dem Anwender gleichsam als Text. Bei der zweiten Formatierung wurde das Format auf "Standard" oder "Zahl" gesetzt. Das fehlende Feature besteht nun darin, dass Excel keinen Versuch unternimmt, die internen Werte in numerische Werte zu konvertieren und statt dessen an Textdaten festhält. Indem Sie den Inhalt der Zelle löschen, entfernen Sie gleichsam die Textdaten und es ist wieder Platz für als solche interpretierte Zahlen.

Sämtliche Zahlen in den betreffenden Zellen noch einmal einzugeben ist jedoch nicht nur frustrierend, sondern raubt Ihnen auch unter Umständen einiges Ihrer kostbaren Zeit. Da liegt es nahe, eine derartige Routinearbeit an ein Makro zu delegieren. Die Implementierung eines solchen Makros ersparen wir Ihnen - die Lösung steckt in der Makro-Prozedur FormatTextToNumber im importfertigen Modul modFormatTextToNumber.bas.

Der Code des Makros FormatTextToNumber durchläuft sämtliche markierten Zellen. Diese sind als Range-Objekte in der Selection-Eigenschaft des globalen Application-Objekts abgelegt. Über die NumberFormat-Eigenschaft der Range-Objekte wird die Formatierung auf "Standard" zurückgesetzt. Falls der Inhalt der aktuellen Zelle als numerischer Wert interpretiert werden kann, liest die Prozedur den Inhalt als Text über die Text-Eigenschaft des Range-Objektes aus, konvertiert die Zeichenfolge in einen Wert vom Typ Double und schreibt diesen über die Value-Eigenschaft zurück in die Zelle.

Public Sub FormatTextToNumber()
  Dim rngCell As Range
  
  For Each rngCell In Selection.Cells
  With rngCell
    .NumberFormat = "General"
    If IsNumeric(.Text) Then
    .Value = CDbl(.Text)
    End If
  End With
  Next 'rngCell
End Sub

Das Excel-Makro FormatTextToNumber konvertiert als Text formatierte Zellbereiche in das Standard-Zahlenformat um


Excel-Modul modXLFormatTextToNumbers (modXLFormatTextToNumbers.bas - ca. 0,5 KB)



VBA-Übersicht

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer