Registriert seit: 21.02.2017
Version(en): 2010
Hallo,
ich bräuchte einmal Hilfe. Ich habe eine Tabelle in der per bedingter Formatierung diverse Zellen eingefärbt werden. Diese Zellen sind aber noch leer. Jetzt soll in diese Zellen aber ein bestimmter Text geschrieben werden, wenn die Hintergrund Farbe RGB 196,215,155 ist. Müsste wohl VBA Code sein, da ich ja nicht in jede Zelle eine Formel eintragen kann/will, oder?
Danke Gruß Steve
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
der einzige Weg ist mit einer Schleife über alle Zellen des relevanten Bereichs jeweils die Farbe mit "Range.DisplayFormat" zu prüfen.
mfg
Registriert seit: 21.02.2017
Version(en): 2010
Klingt Interessant, aber meine Programmierkenntnisse in Eigenregie tendieren leider gegen 0. Ich bräuchte das schon komplett auf dem Silbertablett serviert
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
Hallo, hier ein Beispiel, der A1:A10 in der ersten Tabelle prüft ... Code: Sub Test() Dim c As Range For Each c In ThisWorkbook.Worksheets(1).Range("A1:A10") If Not c.DisplayFormat.Interior.Color <> RGB(196, 215, 155) Then c.Value = "Hallo" End If Next End Sub
Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Folgende(r) 1 Nutzer sagt Danke an maninweb für diesen Beitrag:1 Nutzer sagt Danke an maninweb für diesen Beitrag 28
• steve
Registriert seit: 21.02.2017
Version(en): 2010
29.08.2019, 11:00
(Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2019, 11:00 von steve.)
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
Hallo, um Zellen ohne die Farbe wieder zu löschen, brauchst Du ja nur einen Else hinzufügen ... Code: Sub Test() Dim c As Range For Each c In ThisWorkbook.Worksheets(1).Range("A1:A10") If c.DisplayFormat.Interior.Color <> RGB(196, 215, 155) Then c.Value = "" Else c.Value = "Hallo" End If Next End Sub
Es gibt kein Ereignis in Excel VBA, welches ausgelöst wird, wenn sich eine bedingte Formatierung ändert. Von daher würde ich empfehlen, einen Button/AutoForm zu erstellen, dem/der Du das Makro zuweist. Ansonsten, wenn Dich Klassenprogrammierung und mehr Code nicht abschrecken, könntest Du versuchen, den Code von Flotter Feger aus dem Office-Lösung Forum anzupassen. Ob's überhaupt möglich ist, das auch mit DisplayFormat zu machen, habe ich nicht geprüft, kann aber sein, nicht. Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Registriert seit: 21.02.2017
Version(en): 2010
Die Auto Form Lösung ist fürs Erste ausreichend, Danke. Allerdings rechnet Excel gut 5sek. um das Makro auszuführen. Ich denke mal, weil er die mit dem Else das komplette Blatt prüft. Besser wäre, wenn nur der Bereich A1:J367 berücksichtigt wird.
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
Hallo, dass das Makro länger braucht, dürfte primär daran liegen, dass Excel bei jedem Schreiben rechnet. Probiere mal folgende Prozedur aus, die die automatische Berechnung am Anfang ausschaltet und am Ende wieder auf den Ursprungswert zurücksetzt. Nein, das komplette Blatt wird in meinem Beispielcode nicht geprüft, sondern nur A1:J367 in diesem Beispiel. Im vorherigen Beispiel war das dann A1:A10. Code: Sub Test() Dim c As Range Dim z As Long z = Application.Calculation Application.Calculation = xlCalculationManual For Each c In ThisWorkbook.Worksheets(1).Range("A1:J367") If c.DisplayFormat.Interior.Color <> RGB(196, 215, 155) Then c.Value = "" Else c.Value = "Hallo" End If Next Application.Calculation = z End Sub
Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Registriert seit: 21.02.2017
Version(en): 2010
02.09.2019, 08:49
(Dieser Beitrag wurde zuletzt bearbeitet: 02.09.2019, 08:49 von steve.)
die automatische Berechnung zu deaktivieren bringt auch keinen "Geschwindigkeitszuwachs".
Ich müsste mich wohl von der Lösung über bedingte Formatierung in Kombi mit dem VBA Code weg und alles in VBA lösen
|