Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1736to1740
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Benutzerdefinierte Formatierung in Excel

Benutzerdefinierte Formatierung in Excel
28.01.2020 10:47:11
Werner
Hallo Forumsmitglieder,
bei mir wurden manche Beträge falsch dargestellt. Inzwischen kenne ich auch die Ursache: woher auch immer, hatte ich in meinen "benutzerdefinierten Formaten" eine Definition, welche identisch mit dem Format für "Währung mit 2 Kommastellen und Negativ-Beträge mit Minuszeichen und in rot sowie mit Euro-Symbol nach dem Wertl" ist. Doch mit dieser Format-Vorgabe wurde der Betrag anders dargestellt als mit der Vorgabe "Währung". Ich muss dazu erwähnen, dass ich seit einiger Zeit Office/Excel 2019 im Einsatz habe. Früher ist mir die falsche Darstellung nicht aufgefallen.
Nachdem ich das entsprechende Benutzer-Format gelöscht hatte, wurden die davon betroffenen Beträge nur noch als Standard angezeigt.
Meine Frage: kann man per VBA die möglichen Benutzer-Formate auslesen? Dann könnte ich meine Workbooks nach diesem Format durchsuchen und dann (ggf. von Hand) das fragliche Format löschen.
Einfach die betreffenden Spalten auswählen und "Währung" als Format wählen kann ich nicht nutzen, weil in manchen Spalten auch anders formatierte Werte enthalten sind.
Gruß
Werner

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Benutzerdefinierte Formatierung in Excel
28.01.2020 14:48:20
Matthias
Moin!
Mit der numberformat Eigenschaft kannst du dir von einer Zelle das Format anzeigen lassen. bspw. so:
Cells(1, 1).NumberFormat
Den Wert kannst du mit deinem gesuchten vergleichen.
VG
AW: Benutzerdefinierte Formatierung in Excel
28.01.2020 14:58:33
Werner
Danke, Matthias,
aber das war nicht meine Frage. Wie man die Eigenschaften eines Feldes ermitteln kann, ist bekannt und dazu gibt es im Internet auch viele Hinweise.
Mein Ansatz ist, die Liste der möglichen "benutzerdefinierten Formate" auszulesen, unabhängig davon, ob sie genutzt werden oder nicht.
Gruß
Werner
AW: Benutzerdefinierte Formatierung in Excel
28.01.2020 21:07:53
Matthias
Moin!
Genau das hatte ich befürchtet - deswegen hatte ich das vorhin mal nicht angesprochen. ICh habe ein wenig recherchiert. Eine Enummeration der Werte oder Formate an sich gibt es wohl nicht. Auch keine LIste aus der man das auslesen kann. Mann könnte sich das was zusammen programmieren. Aber ganz so einfach ist das nicht. Die normalen Formate sind wohl im Excel schon integriert. Sie können deshalb auch nicht gelöscht werden. Die benutzerdefinierten Formate werden in der styles.xml der jeweiligen Datei zwischengespeichert. Die kannst du sehen, wenn du deine Datei in zip umbenennst und dann öffnest. In dem Unterordner xl liegt die Datei und dort sind auch die Formate im xml hinterlegt. Das Problem ist nun, dass man an die Daten nicht rankommt, wenn du die Datei schon offen hast. HIer mal ein schnell zusammengebastelter Code, um die Formate aus einer anderen Datei auszulesen. Pfad und Datei kann du anpassen. Damit werden dir zur Datei die Format in einem Array erstellt. Das könnte man in eine Schleife umbasteln, mit welcher du aus deinen Dateien die Formate ausliest und in einer Referenzdatei zwischenspeicherst. Beim Öffnen deiner eigenen Datei dann in dieser Datei gegebenfalls "nachschlagen" und schauen, ob es da Formate gibt.
Sub auslesen()
Dim pfad, datei
Dim nr, temp, neudat, inhalt
Dim anzahl As Long, stelle As Long
Dim myformat()
'die beiden kannst du anpassen
pfad = ThisWorkbook.Path
datei = "test.xlsx"
'das so lassen
neudat = "test.zip"
If Dir(pfad & "\" & datei)  "" Then Name pfad & "\" & datei As pfad & "\" & neudat
With CreateObject("Shell.Application")
For i = 0 To .Namespace(ThisWorkbook.Path & "\test.zip").items.Count
If .Namespace(ThisWorkbook.Path & "\test.zip").items.Item(i + 1) = "xl" Then
Set neu = .Namespace(ThisWorkbook.Path & "\" & neudat).items.Item(i + 1)
For j = 0 To .Namespace(neu).items.Count - 1
If .Namespace(neu).items.Item(j).Name = "styles.xml" Then
.Namespace(ThisWorkbook.Path).CopyHere .Namespace(neu).items.Item(j)
nr = FreeFile
Open ThisWorkbook.Path & "\styles.xml" For Input As nr
inhalt = Input(LOF(nr), nr)
Close nr
Kill ThisWorkbook.Path & "\styles.xml"
Exit For
End If
Next
Exit For
End If
Next
End With
If Dir(pfad & "\" & neudat)  "" Then Name pfad & "\" & neudat As pfad & "\" & datei
'jetzt auswerten
temp = Split(inhalt, "", vbTextCompare) - 1
anzahl = Trim(Replace(Left(temp, stelle), Chr(34), ""))
temp = Split(temp, "formatCode=""")
ReDim myformat(anzahl)
For stelle = 1 To anzahl
myformat(stelle) = Left(temp(stelle), InStr(1, temp(stelle), Chr(34), vbTextCompare) - 1)
Next
MsgBox "Es gibt " & anzahl & " individuelle Formate. Diese lauten." & vbCrLf & Join(myformat,  _
vbCrLf)
End Sub

HAbe es getestet und läuft. Einfach mal probieren. Bei Fragen einfach melden.
VG
Anzeige
AW: Benutzerdefinierte Formatierung in Excel
28.01.2020 21:11:37
Matthias
Moin!
Habe nach dem Hochladen gesehen, dass er am Code was entfernt hat. Hier der Code nochmal als txt.
https://www.herber.de/bbs/user/134803.txt
VG
AW: Benutzerdefinierte Formatierung in Excel
01.02.2020 11:14:47
Werner
Hallo Matthias,
vielen Dank für Dein Beispiel und sorry, dass ich mich erst heute melde: schon seit einiger Zeit bekomme ich keine Mail bei einem neuen Eintrag, obwohl ich das beim Erstellen des Thread angegeben habe.
Deinen Code habe ich probiert: ich bekomme die Daten. Super.
Kleiner Hinweis:
Wenn man schon die Option hat, die Variable "pfad" mit einem anderen Inhalt zu füllen, dann sollte auch ein paar Zeilen danach die Variable "pfad" und nicht "ThisWorkbook.Path" verwendet werden. Möglicherweise lag mein Problem auch nur daran, dass ich Deinen Code in eine neue Mappe eingefügt habe, und die noch keinen ThisWorkbook.Path hatte, weil sie noch nicht gesichert wurde.
Weiteres Problem: die Darstellung.
Userbild
Alles für mich kein Problem. Ich kenne jetzt den Weg, wie ich an diese Daten komme, und kann dann eine Meldung ausgeben, wenn ich bestimmte Formate erkenne, um die dann in der entsprechenden Mappe manuell zu löschen.
Nochmals: vielen Dank. Und ein schönes Wochenende.
Gruß
Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige