Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Benutzerdefinierte Formatierung mit VBA ändern

Forumthread: Benutzerdefinierte Formatierung mit VBA ändern

Benutzerdefinierte Formatierung mit VBA ändern
06.10.2016 18:05:34
Heinz
Hallo Zusammen
In einer Tabelle verwende ich jede Menge Benutzerdefinerte Formaterung wie z.B.kg/std . In anderen Sprachen braucht man leider ab und zu auch andere Einheiten. Umrechnen ist meistens nicht notwendig aber eine andere Schreibweise, z.B. kg/hr anstelle kg/std.
Ich suche nach einem Weg die im Hintergrund laufende Auswahltabelle für die Benutzerdefinierten Formatierungen durch eine Länderspezifische Variable umzuschalten. Entweder solche Formatierungen wie #.### $[kg/std] in #.### $[kg/hr] umzutauschen oder in den Zellen den Verweis auf die Formatierung auf eine andere fest angelegte Fremdsprachliche Formatierung zu ändern. Eine Länderspezifische Variable die ich abfragen kann läuft im Hintergrund public mit.
Für jede Zelle eine VBA Formatierung zu machen ist reichlich schwierig bei ca.35 Tabellen mit je 100 Zeilen und xxx Zellen ..... :( Eine UDF mit selbst zusammengebauten Formatierungen geht auch nicht, weil mit den Zellen weiter gerechnet wird.
Hat jemand eine Idee ?
Herzlichen Dank im Voraus.
Heinz
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Benutzerdefinierte Formatierung mit VBA ändern
07.10.2016 09:47:48
fcs
Hallo Heinz,
Hat jemand eine Idee ?
Ja.
1. genormte Kurzzeichen für Einheiten
Verzichte auf die liebgewonnenen persönlichen oder nationalen Kurzschreibweisen von Einheiten und verwende die im Normenwesen festgelegten Kurzzeichen der Einheiten.
Damit hast du zumindest für alle Länder mit lateinischem Alphabet die Basiseinheiten erschlagen.
2. Formatnamen
Verwende konsequent Formatnamen, die nur das Zahlenformat ändern.
In einer Tabelle legst du für die verschiedenen Länder/Sprachen die für die Formatnamen zu verwendenden benutzerdefinierten Formate fest.
Bei einem Wechsel der Sprache muss dann ein Makro die Liste der Formatnamen abarbeiten und das zugehörige nationale Zahlen-Format den Formatnamen zuweisen.
Allerdings muss man aufpassen, dass man dabei innerhalb einer Arbeitsmappe nicht die max. zulässige Anzahl von Formatierungen in einer Arbeitsmappe überschreitet.
3. Einheiten in separaten Zellen
Dafür ist der Zug wahrscheinlich schon abgefahren.
Wenn nicht, dann könntest du die Einheiten im Spaltentitel oder in einer Nachbarspalte per SVERWEIS länder-/sprachspezifisch gestalten.
Egal welchen Weg du einschlägst. Du kommst nicht darum herrum einmal deine Tabellenblätter gründlich zu überarbeiten.
LG
Franz
Hier ein Beispiel mit Umsetzung via Zellformatvorlagen
https://www.herber.de/bbs/user/108636.xlsm
Anzeige
AW: Benutzerdefinierte Formatierung mit VBA ändern
07.10.2016 11:11:36
Heinz
Hallo Franz
Das mit den internationalen Kurzbezeichnungen verwenden wir zu 80%. Mein Beispiel war vielleicht etwas unglücklich. kg/h versteht natürlich jeder und es muss nicht kg/std heißen.
Anders z.B. bei der Formatierung Sack/h oder Palette/std da muss ein anderer Weg her. Da mit den Werten gerechnet wird sind natürlich Benutzerdefinierte Formate angelegt. Zweite Spalten würden den Rahmen sprengen und zu unübersichtlich sein. Sieht auch beim Ausdruck nicht so schön aus.
Du Schreibst:
2. Formatnamen
Verwende konsequent Formatnamen, die nur das Zahlenformat ändern.
In einer Tabelle legst du für die verschiedenen Länder/Sprachen die für die Formatnamen zu  _
verwendenden benutzerdefinierten Formate fest.
Bei einem Wechsel der Sprache muss dann ein Makro die Liste der Formatnamen abarbeiten und das zugehörige nationale Zahlen-Format den Formatnamen zuweisen.
Genau solch ein Makro suche ich.
-> Globale Änderung der Zuweisung der benutzerdefinierten Formate per Makro oder Formatierung der Zellen auf Basis einer Liste die irgendwo abgelegt ist.
Gruß
Heinz
Anzeige
AW: Benutzerdefinierte Formatierung mit VBA ändern
07.10.2016 11:20:33
Heinz
Sorry,
habe den Anhang übersehen. Das geht schon in die Richtung nach dem was ich gesucht habe.
Jetzt müsste es nur noch global gehen. Ich meine bei Sprachwechsel alle Tabllen in allen Spalten abzufahren und zu ändern geht natürlich auch, nur dauert dann.... any Idea ?
Herzlichen Dank
Heinz
Anzeige
AW: Benutzerdefinierte Formatierung mit VBA ändern
07.10.2016 17:50:51
fcs
Hallo Heinz,
meine Beispieldatei ist schon so eingerichtet, dass die Anpassung global in der Datei erfolgt.
Entsprechend den Namen in Spalte A ("Formatmamen") in Blatt "Einheiten" sind Zellformatvorlagen angelegt.
Diese Zellformatvorlagen sind so definiert, dass sie nur das Zahlenformat der Zellen festlegen.
Alle anderen Formate der Zellen bleiben unverändert.
In Spalte D ist das Format der Zahlen definiert, indem das Zahlenformat der Zelle entsprechend gewählt wird. Im wesentliichen dann die Anzahl der Nachkomma-Zahlen und ob die 1000er-Trennzeichen dargetsellt wird. In den Spalten E bis zum Ende der Tabelle nach rechts sind dann die zugehörigen Texte der Sprachen eingetragen.
Bei der Definition der Formatvorlage hab ich immer das deutsche benutzerdefinierte Formt benutzt als Initialwert.
Der Zelle in Spalte B ist die Formatvorlage in Spalte A zugewiesen und ein Beispielwert wird eingetragen. Dies dient nur als Kontrollanzeige.
In den Tabellen mit den Daten musst du dann die betreffenden Zellbereiche markieren und ihnen die entsprechende Zellformatvorlge zuweisen.
Wird im Blatt "Übersicht" die Sprache geändert, dann wird automatisch das Makro gestartet, das den im Blatt "Einheiten" gelisteten Zellformatvorlgen (Styles) als Zahlenformat die Kombination der Formate in Spalte D und der Sprachspalte als benutzerdefiniertes Format zuweist.
Mit der Änderung der Zellformatvorlage wird die Darstellung in allen Zellen geändert, denen die Zellformatvorlage zugewiesen ist.
Nach der Definition der Zellformatvorlagen in Blatt "Einheiten" hast du also einmal die Fleißarbeit in den anderen Tabellenblättern den relevanten Zellen die Formatvorlagen zuzuweisen.
Gruß
Franz
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Benutzerdefinierte Formatierung mit VBA ändern


Schritt-für-Schritt-Anleitung

Um die benutzerdefinierte Formatierung in Excel mit VBA zu ändern, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei)“ und wähle „Einfügen“ > „Modul“.

  3. Schreibe das VBA-Skript: Füge folgenden Code ein, um das Zahlenformat global zu ändern:

    Sub FormatChange()
       Dim ws As Worksheet
       Dim cell As Range
       Dim formatString As String
    
       formatString = "#.### $[kg/hr]" 'Hier das gewünschte Format eingeben
    
       For Each ws In ThisWorkbook.Worksheets
           For Each cell In ws.UsedRange
               If cell.NumberFormat = "#.### $[kg/std]" Then
                   cell.NumberFormat = formatString
               End If
           Next cell
       Next ws
    End Sub
  4. Führe das Skript aus: Schließe den VBA-Editor und kehre zu Excel zurück. Drücke ALT + F8, wähle „FormatChange“ aus der Liste und klicke auf „Ausführen“.

  5. Überprüfe die Änderungen: Stelle sicher, dass alle Zellen im gewünschten Format angezeigt werden.


Häufige Fehler und Lösungen

  • Fehler: „Typen nicht übereinstimmend“
    Lösung: Überprüfe, ob alle Zellen im richtigen Format sind, bevor du das Makro ausführst. Mische keine Text- und Zahlenformate in den Zellen.

  • Fehler: „Die maximale Anzahl von benutzerdefinierten Formaten überschritten“
    Lösung: Reduziere die Anzahl der benutzerdefinierten Formate oder verwende allgemeinere Formate.


Alternative Methoden

  1. Zellformatvorlagen verwenden: Erstelle Zellformatvorlagen in Excel, die das Zahlenformat ändern, ohne die benutzerdefinierten Formate zu beeinflussen. Dies kann die Verwaltung der Formate erleichtern.

  2. Benutzerdefinierte Formatierung direkt in Excel: Gehe zu „Start“ > „Zahlenformat“ und wähle „Weitere Zahlenformate“, um manuell das Format zu ändern.


Praktische Beispiele

  • Beispiel 1: Um kg/std in kg/hr zu ändern, kannst du das oben gezeigte VBA-Skript verwenden. Stelle sicher, dass du das formatString entsprechend anpasst.

  • Beispiel 2: Wenn du Excel-Buchhaltungszahlenformat ändern möchtest, setze formatString = "#,##0.00 €" für Euro-Formate.


Tipps für Profis

  • Verwende globale Variablen für häufige Formate, um das Skript flexibler zu gestalten.
  • Implementiere Fehlerbehandlungen in deinem VBA-Code, um unerwartete Probleme zu vermeiden.
  • Halte deine Excel-Version aktuell, um von den neuesten Funktionen zu profitieren.

FAQ: Häufige Fragen

1. Wie formatiert man kg in Excel?
Um kg in Excel zu formatieren, verwende die benutzerdefinierte Formatierung, wie z.B. #.### $[kg].

2. Kann ich mehrere Formate gleichzeitig ändern?
Ja, du kannst das VBA-Skript so erweitern, dass es mehrere Formate in einem Durchgang ändert, indem du mehrere If-Bedingungen im Code hinzufügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige