Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1704to1708
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
Farbe Zelle mit Zeichen füllen
30.07.2019 15:09:36
Stef
Hallo,
ich bitte um Mithilfe, da ich nicht weiter komme und mich noch nicht so lange mit VBA beschäftige. Folgender Fall: Ich habe eine Excel-Tabelle über SAS ausgeben lassen, in der schon automatisiert bestimmte Zellen farbig hinterlegt sind (Farbe = Rot, Akzent 2, heller 60%).
Diese farbigen Zellen beinhalten Zahlenwerte und sollen nun mittels eines Punktes • ausgeblendet werden.
Meine bisherige Suche ergab einen Hinweis auf diesen Code, wobei es für das gesamte Register gelten soll:
----------------------------------------
Sub FarbigeZellen()
Dim rngSpalte As Range
Dim rngZeile As Range
Dim blnFarbe As Boolean
For Each rngSpalte In Application.Intersect(Range("E:E"), Me.UsedRange)
For Each rngZeile In Application.Intersect(Range(rngSpalte.Offset(0, 1), _
Cells(rngSpalte.Row, Me.Columns.Count)), Me.UsedRange)
If rngZeile.Interior.ColorIndex  -4142 Then
blnFarbe = True
Exit For
End If
Next 'rngZeile
If blnFarbe Then
rngSpalte = "x"
blnFarbe = False
End If
Next 'rngSpalte
End Sub

----------------------------------------
-Das x müsste durch • ersetzt werden -> ich weiß nicht inwiefern ich dieses Symbol in VBA einsetzen kann
-es werden nicht nur die farbigen Zellen umformatiert, sondern alle...

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Replaceformat
30.07.2019 16:44:23
Fennek
Hallo,
teste mal:

Sub T_1()
Pt = Chr(149) '•
With Application
.FindFormat.Interior.Color = 11389944
.ReplaceFormat.NumberFormat = "•"
End With
Cells.Replace what:="", replacement:="", Lookat:=xlPart, searchorder:=xlByRows, MatchCase:= _
False, searchformat:=True, ReplaceFormat:=True
End Sub

mfg
AW: 'Mid-Dot' (als übliches statistisches Zeichen ...
31.07.2019 07:04:25
Stef
Leider bekomme ich bei deinem Code die Fehlermeldung "Anwendungs- oder objektorientierter Fehler"
Was mache ich falsch? :/
AW: Farbe Zelle mit Zeichen füllen
31.07.2019 10:17:22
Daniel
Hi
mal ein paar Fragen:
1. was ist SAS?
2. wie werden die Zellen umgefärbt, mit normaler Hintergrundfarbe oder mit Bedingter Formatierung
3. sollen die Zahlenwerte komplett verschwinden oder sollen sie nur nicht angezeigt werden (wodurch es möglich wäre, sie bei Bedarf wieder einzublenden)
4. stehen in den Zellen der Spalte E Formeln oder feste Werte?
eine VBA-Freie lösung würde so aussehen:
1. filtere in der Spalte E mit dem Autofilter nach der entsprechenden Farbe
2. markiere alle Zellen in der Spalte E
3. gib das Zeichen ein, indem du bei gehaltener ALT-Taste auf dem Num-Block die Ziffernfolge 0149 eintippst
4. Schließe die Eingabe mit STRG+ENTER ab, dann wird sie in alle markierten Zellen übernommen.
Gruß Daniel
Anzeige
AW: Farbe Zelle mit Zeichen füllen
31.07.2019 14:42:57
Stef
Hallo Daniel,
1. SAS ist ein Statistikprogramm
2. das passiert über SAS, ich glaub es ist normale Färbung
3. die zahlen sollen durch den Punkt • ersetzt werden und man darf es dann nicht wieder rückgängig machen
4. Es sind keine Formeln vorhanden, da dies in SAS hinterlegt ist und die Excel-Ausgabe nur die Werte enthält von 0 über 0,5 bis z.B 2000
dien Vorschlag ist schon ganz gut, nur leider betrifft dies wesentlich mehr spalten und gerade diesen Aufwand wollte ich umgehen.
AW: Farbe Zelle mit Zeichen füllen
31.07.2019 15:49:10
Daniel
also deine Schleifenkonstruktion ist sehr umständlich, ich blicke da jetzt nicht durch, welcher Zellbereich überhaupt bearbeitet werden soll
der Grund, warum alle Zellen überschrieben werden liegt vermutlich darin, dass
a) von SAS alle Zellen irgendeine Farbe bekommen (weiß ist auch eine Hintergrundfarbe) und
b) dein Code nur prüft, ob die Zelle überhaupt eine Hintergrundfarbe hat, egal welche.
ich finde die Idee von Fennek ziemlich genial, hier mit der Menüfunktion ERSEZTEN zu arbeiten, da diese auch nach Formaten suchen kann, was das ganze recht einfach macht.
ich würde seinen Code aber so modifizieren.
Sub Makro2()
Application.FindFormat.Clear
Application.FindFormat.Interior.Color = ActiveCell.Interior.Color
Cells.Replace What:="", Replacement:=Chr(149), LookAt:=xlPart, searchformat:=True
End Sub
damit es keine Problem mit der Farbe gibt, habe ich es so gelöst, dass die Farbe aus der aktiven Zelle gelesen wird.
Dh du musst eine der Zellen, die mit dem Punkt gefüllt werden soll, selektieren und dann das Makro starten.
Ansonsten müsstest du dir den Color-Wert ermitteln und diesen in den Code einsetzen
(Zelle markieren und im Direktfenster ?Selection.Interior.Color eingeben, den angezeigten Wert in den Code übernehmen.)
Gruß Daniel
Anzeige
AW: Farbe Zelle mit Zeichen füllen
01.08.2019 07:25:45
Stef
Hallo Daniel,
danke dir für den Code.
Leider klappt es noch nicht so ganz, weil nahezu überall Punkte eingesetzt werden.
Ich hab mal einen Ausschnitt der Datei, ich denke das ist dann einfacher zum herumprobieren :)
www.herber.de/bbs/user/131199.xlsm
Die roten Felder sollen ein Punkt bekommen. Ich hab es leider nicht hinbekommen die Farbe zu ermitteln..(totaler noob)..
AW: Farbe Zelle mit Zeichen füllen
01.08.2019 08:22:09
Daniel
Hi
warum das nicht funktionert ist logisch.
Ich hatte dich gefragt, ob die Färbung durch normale Hintergrundfarbe oder durch die bedingte Formatierung erfolgt (Frage 2).
Deine Antwort: "2. das passiert über SAS, ich glaub es ist normale Färbung"
nur ist das leider falsch, weil die Felder in der Datei mit Bedingiter Formatierung umgefärbt wurden.
daher funktionert mein Code auch nicht, weil dieser ausgehend von deinen Angaben mit bedingter Formatierung umgefärbt wurde und man bei Bedingter Formatierung hier ganz anders suchen muss.
wenn die Zellen über bedingte Formatierung umgefärbt werden, musst wie in deinem ursprünglichen Makro mit einer Schleife über die Zellen laufen und die Formateigenschaften mit dem Zusatz .DisplayFormat abfragen.
If Cells(...).DisplayFormat.Interior.ColorIndex  -4142 then

Gruß Daniel
Anzeige
AW: Farbe Zelle mit Zeichen füllen
01.08.2019 08:38:03
Stef
Morgen Daniel,
das wusste ich nicht, sorry an dieser Stelle.
Wie gesagt, ich beschäftige mich noch nicht so lange damit.
Könntest du mir nochmal beim vollständigen Code helfen? Dann passieren hoffentlich nicht so viele Fehler :)
AW: Farbe Zelle mit Zeichen füllen
01.08.2019 08:51:07
Daniel
Hast du das mit dem DisplayFormat schon mal ausprobiert?
Welche Fragen hast du denn?
Gruß Daniel
AW: Farbe Zelle mit Zeichen füllen
01.08.2019 14:53:47
Stef
Ich glaube ich stehe gerade total auf dem Schlauch, also ich muss jetzt erstmal den Farbcode ausfindig machen? Und ich verstehe noch nicht so ganz den Anfang von dem DisplayFormat (If Cells....) Wo kommt das hin und was genau trage ich dort ein?
Kann ich die Range("E:E") auch ganz weg lassen, sodass gleich die ganze Tabelle bearbeitet wird?
Ich habe jetzt hier anstatt des "x" den Punkt eingesetzt.
VBA meckert auch wegen dem Schlüsselwort "Me" herum. WIe ich bereits schrieb, ich hab den von mir eingestellten Code durch eine Google-Suche gewonnen, da ich mich noch nicht wirklich lange mit VBA auskenne, um da so vieles zu verstehen. Daher wäre etwas ausführlicheres wirklich hilfreicher :(
Sub FarbigeZellen()
Dim rngSpalte As Range
Dim rngZeile As Range
Dim blnFarbe As Boolean
For Each rngSpalte In Application.Intersect(Range("E:E"), Me.UsedRange)
For Each rngZeile In Application.Intersect(Range(rngSpalte.Offset(0, 1), _
Cells(rngSpalte.Row, Me.Columns.Count)), Me.UsedRange)
If rngZeile.Interior.ColorIndex  -4142 Then
blnFarbe = True
Exit For
End If
Next 'rngZeile
If blnFarbe Then
rngSpalte = "•"
blnFarbe = False
End If
Next 'rngSpalte
End Sub

Anzeige
AW: Farbe Zelle mit Zeichen füllen
05.08.2019 10:11:32
Daniel
Hi
du kannst das im Prinzip so machen, wenn du alle Zellen durchsuchen willst:
dim Zelle as Range
For each Zelle in Activesheet.Usedrange
if Zelle.DisplayFormat.Interior.Colorindex  -4142 then
Zelle.Value = Chr(149)
end if
next

das würde jetzt aber alle Zellen mit Hintergrundfarbe so abändern.
wenn du auf eine bestimmte Farbe prüfen willst, dann brauchst du den .Color-Wert dieser Farbe.
diesen kannst du ermitteln, indem du eine Zelle mit dieser Farbe markierst und im Direktfenster den Befehl eingibst:
?Selection.DisplayFormat.Interior.Color
den daraufhin angezeiten Wert kannst du in deinen Code übernehmen.
das ME deutet darauf hin, dass der Originalcode ursprünglich in einem Tabellenblattmodul platziert war und nicht in einem allgemeinen Modul
In allen Objektbezogenen Klassenmodulen kann man das Objekt, zu welchem das betroffene Modul gehört, immer mit ME ansprechen.
dh steht der Code im Modul der Tabelle1, ist ME die Tabelle1
steht der Code in einer Userformmodul, ist ME die Userform.
steht der Code in einem allgemeinen Modul, darf man ME nicht verwenden, sondern muss das betroffene Objekt einsetzen.
Gruß Daniel
Anzeige
AW: Farbe Zelle mit Zeichen füllen
05.08.2019 11:08:31
Stef
Danke für die super vielen Infos!!!!:3
Ich habe jetzt den Farbcode eingesetzt, aber mit werden entweder alle Felder ersetzt oder wenn ich es Folgendermaßen mache, gar keines:
Sub Farbe()
Dim Zelle As Range
For Each Zelle In ActiveSheet.UsedRange
If Zelle.DisplayFormat.Interior.ColorIndex = 12040422 Then
Zelle.Value = Chr(149)
End If
Next
End Sub

Was mache ich noch falsch?
AW: Farbe Zelle mit Zeichen füllen
05.08.2019 11:16:51
Daniel
Hi
Color ist nicht ColorIndex
Color ist der RGB-Farbwert der Zelle.
ColorIndex ist ein Überbleibsel aus dem alten Excel bis Version 2003, als es eine Beschränkung von maximal 56 unterschiedlichen Farben auf einem Tabellenblatt gab.
diese Farben mussten in einer Tabelle eingetragen werden und über den Colorindex wurde dann eine dieser 56 Farben ausgewählt, dh für den Colorindex sind nur Zahlen von 1-56 sinnvoll
Excel führt den ColorIndex noch aus kompatibilitätsgründen mit, aber tatsächlich benötigt wird nur ColorIndex = -4142 für die Eigenschaft: keine Hintergrundfarbe.
Gruß Daniel
Gruß Daniel
Anzeige
AW: Farbe Zelle mit Zeichen füllen
05.08.2019 11:34:52
Stef
oh wow, was man nicht alles wissen muss.
es hat jetzt auch endlich geklappt!!! Vielen lieben Dank an dieser Stelle!! Das hat mir wahnsinnig weitergeholfen :3

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige