Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA bed.Formatierung - Zahlenformat

VBA bed.Formatierung - Zahlenformat
25.02.2020 16:15:15
KST
Hallo,
ich habe folgenden Sachverhalt:
ich stelle meinen Kollegen eine Excel Vorlage zur Verfügung. Durch diverse Aktionen (Kopieren...) der Kollegen kommt es immer wieder vor das meine Bedingten Formatierungen ihre ursprünglichen Bezüge verlieren. zum Aufräumen hab ich mir ein VBA Makro gebaut welches erst alle im Tabellenblatt enthaltenen bedingten Formatierungen löscht und dann meine wieder einspielt.
Ich möchte in einem Fall das Zahlenformat 000,0 (also eine nachkommastelle) und einmal 000,000 (also drei Nachkommastellen). mit dem Rekorder hat das auch gut ausgesehen wenn das Makro allerdings dann drüber läuft werden die gewünschten Zahlenformate ignoriert.
Hier mein Makrotext:
  • 'Ganzzahl 0,000 in Spalte E - klappt nicht !!!
    Range("E9:E6150").Select
    Selection.NumberFormat = "0.000"
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=GANZZAHL(E9)E9"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    'ExecuteExcel4Macro "(2,1,""0,000"")"
    Selection.FormatConditions(1).StopIfTrue = False
    Selection.NumberFormat = "General"
    Range("q1:ar6150").Select
    Selection.NumberFormat = "0.0"
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=GANZZAHL(q1)q1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    'ExecuteExcel4Macro "(2,1,""0,0"")"
    Selection.FormatConditions(1).StopIfTrue = False
    Selection.NumberFormat = "General"

  • vielleicht kann jemand mir weiterhelfen...
    Danke
    Anzeige

    8
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA bed.Formatierung - Zahlenformat
    25.02.2020 16:40:33
    Daniel
    HI
    da du mit einem deutschen Excel arbeitest, verwendest du bei der Eingabe der Zahlenformate natürlich das deutsche Format.
    der Recorder zeichnet dies auch genau so auf.
    im VBA-Makro braucht man in der Regel aber unabhängig von der Ländereinstellung die amerikanischen Formate.
    daher muss man dann in solchen Fällen den aufgezeichneten Code entsprechend abändern.
    du musst also für das Makro das deutsche Dezimal-Komma in einen amerikanischen Dezimal-Punkt abändern.
    Gruß Daniel
    Anzeige
    AW: VBA bed.Formatierung - Zahlenformat
    25.02.2020 16:46:08
    KST
    Danke für die schnelle Antwort - aber das hatte ich schon umgestellt und es hat nichts gebracht. Also "0.000" bzw. "0.0"
    AW: VBA bed.Formatierung - Zahlenformat
    25.02.2020 16:52:35
    Klexy
    Der Makro-Rekorder zeichnet schon die richtigen Formate auf, nämlich die Englischen. Makro kann nur Englisch.
    Dein Problem ist aber die Zeile
    Selection.NumberFormat = "General"
    

    die du 2x hast und die dir das formatierte Ergebnis nachträglich zunichte macht.
    Anzeige
    AW: VBA bed.Formatierung - Zahlenformat
    25.02.2020 17:07:30
    KST
    Hab die beiden Zeilen jetzt auskommentiert und trotzdem steht in der Bedingten Formatierung "kein Format festgelegt"
    Userbild
    AW: VBA bed.Formatierung - Zahlenformat
    25.02.2020 17:27:20
    Klexy
    Dann lad mal die Datei hoch und keinen Screenshot von etwas, das keine Auswirkung auf das Zahlenformat hat.
    Und noch was: Welche Excel-Version verwendest du, dass dir der Makro-Rekorder bedingte Formatierungen aufzeichnet?
    Anzeige
    AW: VBA bed.Formatierung - Zahlenformat
    25.02.2020 17:59:41
    onur
    Vergiss den blöden Makrorecorder - Mach es dso:
    Range("E9:E6150").Select
    Selection.NumberFormat = "0.000"
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=GANZZAHL(E9)E9"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(Selection.FormatConditions.Count).NumberFormat = "0,000"
    Selection.FormatConditions(Selection.FormatConditions.Count).StopIfTrue = False
    Range("q1:ar6150").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=GANZZAHL(q1)q1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(Selection.FormatConditions.Count).NumberFormat = "0,0"
    Selection.FormatConditions(Selection.FormatConditions.Count).StopIfTrue = False
    

    Anzeige
    AW: VBA bed.Formatierung - Zahlenformat
    25.02.2020 18:00:22
    onur
    Die 2 Zeile muss noch weg!
    AW: VBA bed.Formatierung - Zahlenformat
    25.02.2020 17:37:07
    Daniel
    HI
    naja wenn man sich den Code mal genauer durchliest, ist es doch logisch, warum deine Bedingten Formate nicht funktionieren:
    mit Selection.NumberFormat = "0.000" weist du das Zahlenformat der Zelle direkt zu und nicht der Bedingten Formatierung.
    und am Schluss überschreibst du dann wieder das Zahlenformat der Zelle direkt mit General:
    Selection.NumberFormat = "General"
    Gruß Daniel
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige
    Anzeige

    Infobox / Tutorial

    VBA für bedingte Formatierung und Zahlenformatierung in Excel


    Schritt-für-Schritt-Anleitung

    1. Öffne den VBA-Editor:

      • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    2. Erstelle ein neues Modul:

      • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.
    3. Füge den folgenden Code ein:

      Sub Formatieren()
         ' Ganzzahl 0,000 in Spalte E
         Range("E9:E6150").Select
         Selection.NumberFormat = "0.000"
         Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=GANZZAHL(E9)E9"
         Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
         Selection.FormatConditions(Selection.FormatConditions.Count).NumberFormat = "0,000"
         Selection.FormatConditions(Selection.FormatConditions.Count).StopIfTrue = False
      
         ' Formatierung für Spalte Q
         Range("Q1:AR6150").Select
         Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=GANZZAHL(Q1)Q1"
         Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
         Selection.FormatConditions(Selection.FormatConditions.Count).NumberFormat = "0,0"
         Selection.FormatConditions(Selection.FormatConditions.Count).StopIfTrue = False
      End Sub
    4. Führe das Makro aus:

      • Drücke F5, um das Makro auszuführen.

    Häufige Fehler und Lösungen

    • Fehler: Bedingte Formatierung funktioniert nicht:

      • Lösung: Stelle sicher, dass Du die Zeile Selection.NumberFormat = "General" auskommentierst oder entfernst. Diese Zeile setzt die Formatierung zurück und macht die bedingte Formatierung wirkungslos.
    • Fehler: Zahlenformat wird ignoriert:

      • Lösung: Überprüfe, ob Du in Deinem VBA-Code die richtigen amerikanischen Formatierungen verwendest. Das deutsche Dezimal-Komma muss in einen Punkt umgewandelt werden (z.B. "0.000" anstelle von "0,000").

    Alternative Methoden

    • Direktes Festlegen der Formatierung ohne VBA:

      • Du kannst die Zahlenformate auch direkt in Excel festlegen, indem Du die Zellen auswählst, mit der rechten Maustaste klickst und „Zellen formatieren“ wählst. Von dort kannst Du das gewünschte Format auswählen.
    • Verwendung von Excel-Formeln:

      • Manchmal kann es hilfreich sein, Excel-Formeln wie TEXT zu verwenden, um das gewünschte Format zu erzielen, anstatt VBA zu nutzen.

    Praktische Beispiele

    • Beispiel 1: Festlegen eines Zahlenformats für eine gesamte Spalte:

      Range("A1:A100").NumberFormat = "0.000"
    • Beispiel 2: Hinzufügen einer bedingten Formatierung basierend auf einem Wert:

      With Selection.FormatConditions.Add(Type:=xlCellValue, Operator:=xlGreater, Formula1:=10)
        .Interior.Color = RGB(255, 0, 0) ' Rot
      End With

    Tipps für Profis

    • Effiziente Verwendung von SetFirstPriority:

      • Nutze die Methode SetFirstPriority, um sicherzustellen, dass Deine Formatierungen die höchste Priorität haben. Dies verhindert Konflikte zwischen mehreren bedingten Formatierungen.
    • Verwende Debug.Print zur Fehlersuche:

      • Wenn Dein Makro nicht wie erwartet funktioniert, kannst Du Debug.Print verwenden, um Variablenwerte während der Ausführung zu überprüfen und Fehler zu identifizieren.

    FAQ: Häufige Fragen

    1. Warum funktionieren meine bedingten Formatierungen nicht?
    Achte darauf, dass Du die Standardformatierung nicht zurücksetzt. Entferne oder kommentiere die Zeile Selection.NumberFormat = "General" aus.

    2. Wie kann ich zwischen deutschen und amerikanischen Zahlenformaten wechseln?
    Ändere das Dezimalzeichen in Deinem VBA-Code von Komma auf Punkt, z.B. von "0,000" zu "0.000".

    3. Welche Excel-Version benötige ich für diese Funktionen?
    Die beschriebenen Funktionen sind in den meisten modernen Excel-Versionen verfügbar, sowohl in Excel 2016 als auch in Excel 365.

    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