Registriert seit: 24.03.2017
Version(en): 2010
24.03.2017, 21:41
Hallo liebe Forenmitglieder ich bin der Frische Habe mich hier heute angemeldet, weil ich von der Sache VBA und Excell fasziniert bin.(Aber Anfänger und Learning by doing) Zu meinem Problem: Bsp.: Ich fülle Zelle A1 bis Z1 mit Informationen. Hinter dieser Zeile hätte ich gern einen Button der mir durch Betätigung den Zellhintergrund einfärbt. So weit so gut, das bekomme ich gerade noch so hin, aber jetzt wird´s schwierig : A1 bis Z1 = Weiß >Button>A1 bis Z1 = gelb>Button>A1 bis Z1 = Grün>Button>A1 bis Z1 = Rot>Button>A1 bis Z1 = Weiß.....etc. Jetzt meine Frage: Ist das so überhaupt umsetzbar, und wenn ja,wie. Bin für jeden Lösungsweg dankbar. Nutze zwei verschiedene Versionen von Excel (2010/2013) Danke im Voraus
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo, von mir diese Lösungsmöglichkeit: Code: Private Sub CommandButton1_Click() Dim x Dim farben farben = Array(vbWhite, vbYellow, vbGreen, vbBlue) x = IIf(Application.Match(Range("A1:B3").Interior.Color, farben, 0) - 1 = UBound(farben), 0, Application.Match(Range("A1:B3").Interior.Color, farben, 0)) Range("A1:Z1").Interior.Color = farben(x) End Sub
Gruß Atilla
Registriert seit: 14.04.2014
Version(en): 2003, 2007
24.03.2017, 22:11
(Dieser Beitrag wurde zuletzt bearbeitet: 24.03.2017, 22:11 von atilla.)
Hallo, eine übersichtlichere Variante: Code: 'diesen Code einmal ausfführen Sub farbe() Range("A1:Z1").Interior.Color = vbWhite End Sub
'ActiveX Schaltflächen Code Private Sub CommandButton1_Click() Dim x As Long, y As Long Dim farben farben = Array(vbWhite, vbYellow, vbGreen, vbBlue) x = Application.Match(Range("A1:Z1").Interior.Color, farben, 0) y = IIf(x - 1 = UBound(farben), 0, x) Range("A1:z1").Interior.Color = farben(y) End Sub
Alles Code ins Code Modul der Tabelle
Gruß Atilla
Registriert seit: 24.03.2017
Version(en): 2010
Erst einmal Danke für die schnelle Antwort.
x = Application.Match(Range("A1:Z1").Interior.Color, farben, 0)
Laufzeitfehler "13"
sagt der Debugger
Weißt Du was ich falsch mache?
Registriert seit: 14.04.2014
Version(en): 2003, 2007
(24.03.2017, 22:33)Schraenki schrieb: Weißt Du was ich falsch mache? Hallo, ich weiß ja nicht mal, dass Du etwas machst. :19: Was genau hast Du gemacht? Hast Du den Code, der einmalig ausgeführt werden sollte auch einmal ausgeführt?
Gruß Atilla
Registriert seit: 24.03.2017
Version(en): 2010
Naja, habs natürlich gleich mit Copy&Paste ausprobiert. Also gehört das nicht in ein Modul? Ich hasse es wenn man keine Ahnung hat :22:
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo, na, wenn alle so gehandelt hätten, dann wäre D nie WM und Podolski hätte nie seine Rekorde geschaft. Also Schritt für Schritt: Rechtsklick auf den Tabellenreiter in der das Ganze passieren soll, Code anzeigen wählen. In das Codefenster alles Code von meinem letzten Beitrag einfügen. Dann den Code Sub farbe() einmal ausführen, danach brauchst Du ihn nicht mehr.Du könntest auch den Bereich A1:Z1 manuell ein mal Färben. aber es ist sicherer, wenn es mit dem Code passiert. Denn dann weiß ich genau welche Farbe dort ist. Danach den zweiten Code ausführen. Ok. jetzt weiß ich nicht, welche Schaltfläche Du nutzt und ob Du eine nutzt. Deswegen unten eine Beipielmappe. Mit Formularschaltflächen ist es sauberer, deswegen habe ich es im Beispiel damit gemacht.
ZellenFarben ändern.xlsm (Größe: 16,36 KB / Downloads: 3)
Gruß Atilla
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, interessant wäre doch bestimmt auch eine Fehleranalyse. Laufzeitfehler 13 sagt Dir, das da was mit dem Typen nicht stimmt Damit es überhaupt erst mal läuft, nimm die Typdefinition von x weg. Dann nimm Range("A1:Z1").Interior.Color
und den kompletten Ausdruck Application.Match(Range("A1:Z1").Interior.Color, farben, 0)
in die Überwachung, gehe den Code schrittweise durch und schaue, was dort steht. Teste das einmal mit ungefärbten Zellen und einmal mit Deinem vbWhite.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Andre,
ich denke, dass hier der Fall Klar ist. Mit Edge hat das glaube ich nichts zu tun, da der Code ja einen Laufzeitfehler anzeigt.
Und dieser Fehler in diesem Code ist auch klar, die Farbe wird nicht gefunden. Das heißt der Vergleichsbereich hat eine andere Farbe. (man könnte hier auch nur eine Vergleichzelle nehmen, wäre vielleicht besser) Wenn einmal der Bereich mit einer der angegebenen Farben gefüllt ist, kommt auch kein Fehler mehr. Deswegen habe ich hier auch entgegen der ersten Variante die Variablen mit Long definiert.
Gruß Atilla
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo atilla,
Edge war in einem anderen Thread ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|