ist es möglich mit VBA auszulesen welches Zeichen ("." oder ",") als Dezimaltrennzeichen von Excel bzw. vom Betriebssystem verwendet wird?
danke
Tom
Sub ChangeSystemSeparators()
Range("A1").Formula = "1,234,567.89"
MsgBox "The system separators will now change."
' Define separators and apply.
Application.DecimalSeparator = "-"
Application.ThousandsSeparator = "-"
Application.UseSystemSeparators = False
End Sub
Option Explicit
Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Declare Function GetCurrencyFormat Lib "kernel32" Alias "GetCurrencyFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, lpFormat As Any, ByVal lpCurrencyStr As String, ByVal cchCurrency As Long) As Long
Const LOCALE_SDECIMAL = &HE
Const LOCALE_STHOUSAND = &HF
Sub Tausender()
Dim lngID As Long, lngCVal As Long, msg As String
lngCVal = GetUserDefaultLCID()
msg = String(255, 0)
Call GetLocaleInfo(lngID, LOCALE_STHOUSAND, msg, 255)
msg = Left$(msg, InStr(msg, Chr(0)) - 1)
MsgBox msg
End Sub
Sub Dezimal()
Dim lngID As Long, lngCVal As Long, msg As String
lngCVal = GetUserDefaultLCID()
msg = String(255, 0)
Call GetLocaleInfo(lngID, LOCALE_SDECIMAL, msg, 255)
msg = Left$(msg, InStr(msg, Chr(0)) - 1)
MsgBox msg
End Sub
Sub Waehrung()
Dim msg As String
msg = String(255, 0)
GetCurrencyFormat ByVal 0&, 0, "1234567.89", ByVal 0&, msg, Len(msg)
msg = Left$(msg, InStr(msg, Chr$(0)) - 1)
MsgBox msg
End Sub
Um das Dezimaltrennzeichen in Excel auszulesen, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu starten.
Klicke auf Einfügen
> Modul
, um ein neues Modul zu erstellen.
Füge den folgenden Code ein, um das aktuelle Dezimaltrennzeichen auszulesen:
Sub AuslesenDezimaltrennzeichen()
MsgBox "Das aktuelle Dezimaltrennzeichen ist: " & Application.DecimalSeparator
End Sub
Schließe den VBA-Editor und gehe zurück zu Excel.
Drücke ALT + F8
, wähle AuslesenDezimaltrennzeichen
aus und klicke auf Ausführen
.
Du solltest nun eine Nachricht sehen, die dir das aktuelle Dezimaltrennzeichen anzeigt.
Fehler: "Der Code funktioniert nicht."
Lösung: Überprüfe, ob du den Code genau so eingegeben hast. Auch die Einstellung Application.UseSystemSeparators
sollte auf True
gesetzt sein, wenn du das Dezimaltrennzeichen vom Betriebssystem übernehmen möchtest.
Fehler: "MsgBox zeigt einen leeren Wert."
Lösung: Stelle sicher, dass Excel die richtigen Regionseinstellungen hat. Du kannst die Regionseinstellungen in der Systemsteuerung überprüfen.
Wenn du nicht mit VBA arbeiten möchtest, kannst du auch die Regionseinstellungen deines Betriebssystems prüfen. Gehe dazu auf:
Systemsteuerung
> Region und Sprache
Formate
kannst du das Dezimaltrennzeichen einsehen und ändern.Für Excel 2016 und neuere Versionen kannst du auch unter Datei
> Optionen
> Erweitert
nachsehen, ob die richtigen Einstellungen für das Dezimaltrennzeichen konfiguriert sind.
Hier sind einige Beispiele für die Verwendung des Codes, um das Dezimaltrennzeichen auszulesen:
Beispiel 1: Das Dezimaltrennzeichen in einer MsgBox anzeigen.
Sub ZeigeDezimaltrennzeichen()
MsgBox "Aktuelles Dezimaltrennzeichen: " & Application.DecimalSeparator
End Sub
Beispiel 2: Verwendung von GetLocaleInfoA
, um das aktuelle Dezimaltrennzeichen zu ermitteln.
Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Const LOCALE_SDECIMAL = &HHE
Sub AuslesenMitAPI()
Dim msg As String
msg = String(255, 0)
Call GetLocaleInfo(GetUserDefaultLCID(), LOCALE_SDECIMAL, msg, 255)
MsgBox "Aktuelles Dezimaltrennzeichen: " & Left$(msg, InStr(msg, Chr(0)) - 1)
End Sub
GetLocaleInfoA
und GetUserDefaultLCID
, um präzise Informationen über die Regionseinstellungen auszulesen.1. Wie kann ich das Dezimaltrennzeichen in Excel ändern?
Du kannst das Dezimaltrennzeichen über die Excel-Optionen oder die Regionseinstellungen deines Betriebssystems ändern.
2. Funktioniert dieser Code auch in Excel 2003?
Ja, der VBA-Code funktioniert ebenfalls in Excel 2003. Stelle jedoch sicher, dass du die richtigen Berechtigungen für die Verwendung von VBA hast.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen