Clever-Excel-Forum

Normale Version: Mit Schaltfläche Zellbereiche einfärben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo liebe Forenmitglieder

ich bin der Frische Blush 

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
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
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
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?
(24.03.2017, 21: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?
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:
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.


[attachment=10400]
Hallöchen,

interessant wäre doch bestimmt auch eine Fehleranalyse. Laufzeitfehler 13 sagt Dir, das da was mit dem Typen nicht stimmt Sad

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.
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.
Hallo atilla,

Edge war in einem anderen Thread ...
Seiten: 1 2