Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mit Schaltfläche Zellbereiche einfärben
#1
Tongue 
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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?
Antworten Top
#5
(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?
Gruß Atilla
Antworten Top
#6
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:
Antworten Top
#7
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.



.xlsm   ZellenFarben ändern.xlsm (Größe: 16,36 KB / Downloads: 3)
Gruß Atilla
Antworten Top
#8
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#9
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
Antworten Top
#10
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)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste