Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1328to1332
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
Fülleffekt per VBA auslesen
05.09.2013 18:55:30
Nico
Hallo zusammen,
vielleicht kann mir irgendjemand helfen. Ich möchte gerne per VBA den Fülleffekt(also Hintergrundfarbe, Farbverlauf usw.) einer Zelle per Button in einer User-Form auf eine andere Zelle übernehmen. Der Knackpunkt dabei ist allerdings, das der User den Fülleffekt und die Farbe in der ich sag's mal "Musterzelle" selber festlegen kann. Wenn der Button gedrückt wird müssen quasi die Farbeigenschaften der Musterzelle ausgelesen werden und anschließend der gewünschten Zelle zugeordnet werden.
Wie kann ich per VBA diese Fülleffekte einer Zelle auslesen? Ich komme irgendwie nicht dahinter.
Vielen Dank schon mal für Eure Hilfe
Gruß, Nico

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fülleffekt per VBA auslesen
05.09.2013 19:10:49
Hajo_Zi
Hallo Nico,
zeichne es mit dem Makrorecorder auf, Format übertragen.

AW: Fülleffekt per VBA auslesen
05.09.2013 19:18:28
Nico
Hallo Hajo,
das habe ich schon gemacht. Da kommt dann sowas raus:
With Selection.Interior
.Pattern = xlPatternRectangularGradient
.Gradient.RectangleLeft = 0.5
.Gradient.RectangleRight = 0.5
.Gradient.RectangleTop = 0.5
.Gradient.RectangleBottom = 0.5
.Gradient.ColorStops.Clear
End With
With Selection.Interior.Gradient.ColorStops.Add(0)
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
With Selection.Interior.Gradient.ColorStops.Add(1)
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.349009674367504
End With
oder sowas:
With Selection.Interior
.Pattern = xlPatternRectangularGradient
.Gradient.RectangleLeft = 0.5
.Gradient.RectangleRight = 0.5
.Gradient.RectangleTop = 0.5
.Gradient.RectangleBottom = 0.5
.Gradient.ColorStops.Clear
End With
With Selection.Interior.Gradient.ColorStops.Add(0)
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
With Selection.Interior.Gradient.ColorStops.Add(1)
.Color = 13408767
.TintAndShade = 0
End With
Dies sind ja festgelegte Werte, die der User ja dann nicht mehr ändern kann. Wenn er sich als "Musterfarbe" nun Rot statt Blau auswählt, würde mein vom Makrorecorder aufgezeichneter Code keinen Sinn mehr machen.
Ich müsste das Ganze jetzt quasi umdrehen, nur wie?
Danke und Gruß

Anzeige
AW: Fülleffekt per VBA auslesen
05.09.2013 19:24:23
Hajo_Zi
also, wenn ich das aufzeichne kommt da bereinigt anderer Code raus. Keine ahnung was Du auzfgezeuchnet hast.
Selection.Copy
Range("C16").PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
Gruß Hajo

AW: Fülleffekt per VBA auslesen
05.09.2013 19:31:51
Nico
Was ich aufgezeichnet habe, sind sozusagen die Werte, wenn ich die Zelle mit einem bestimmten Fülleffekt formatiere.
Aber jetzt weiß ich was Du meinst. Ich soll also einfach das Format der Musterzelle per VBA kopieren. An sowas hatte ich auch schon gedacht, dachte jedoch, es gäbe eine Möglichkeit, die vom Recorder aufgezeichneten Werte auch irgendwie auszulesen. Das fände ich etwas eleganter.
Kann ich mit Deiner Version eigentlich auch nur den Fülleffekt (also Farbe und Verlauf) kopieren, ohne Rahmeneinstellungen usw.?
Gruß, Nico

Anzeige
AW: Fülleffekt per VBA auslesen
05.09.2013 19:33:59
Hajo_Zi
Hallo Nico,
Nein es ist alles Format, was Du willst ist mir nicht klar.
Es gin um das Format übertragen, nicht erstellen.
Gruß Hajo

AW: Fülleffekt per VBA auslesen
05.09.2013 19:44:39
Nico
Also nochmal.
Im Tabellenblatt1 in der Zelle A1 ist als Hintergrundfarbe "Rot" mit farbverlauf usw. hinterlegt
Über eine Userform mit einem Button (mal als Beispiel) soll der Fülleffekt (Farbe, Verlauf) auf die Zelle A2 im Tabellenblatt2 übertragen werden. Die Rahmeneinstellungen sollen nicht übertragen werden.
Der Benutzer kann und darf die Hintergrundfarbe in A1 von "Rot" auf "Blau" ändern. Jetzt muss natürlich die blaue Farbe übertragen werden, und nicht die rot. Von daher war mein Gedanke bei betätigen des Buttons die Fülleffekteigenschaften der Zelle A1 auszulesen und die Eigenschaft auf die Zelle A2 zu übertragen. Normale Farbwerte lassen sich recht gut auslesen, jedoch tu ich mich mit den Effekten wie Verlauf usw. etwas schwer. War das verständlicher.
VG
Nico

Anzeige
AW: Fülleffekt per VBA auslesen
05.09.2013 19:47:54
Hajo_Zi
Hallo Nico,
wie macht man einen Farbverlauf, ich kennne das nur über bedingte Formatierung.
Übertrage die Formel für die Bedingte Formatierung.
Mir ist das jertzt zu aufwendig.
Gruß Hajo

AW: Fülleffekt per VBA auslesen
05.09.2013 19:53:45
Nico
Zelle markieren
rechts klicken
Zelle formatieren
Reiter "Ausfüllen" wählen
Fülleffekte
Farbe auswählen usw.
Das hat nix mit bedingter Formatierung zu tun.
Gruß, Nico

AW: Fülleffekt per VBA auslesen
05.09.2013 19:57:09
Hajo_Zi
das ist auch in VBA aufwendig, ich würde Format übertragen und dann das Löschen was stört, also Rahmen. Das ist einfacher.
Gruß Hajo

Anzeige
AW: Fülleffekt per VBA auslesen
05.09.2013 20:00:26
Nico
Dachte ich mir schon. Schade eigentlich... Na gut, kann man nix machen. Danke trotzdem.
Gruß, Nico

AW: Fülleffekt per VBA auslesen
08.09.2013 21:49:32
Tino
Hallo,
obwohl der Thread schon geschlossen ist hier mal ein Versuch dein oben genanntes Problem relativ einfach zu lösen. Eigentlich brauchst du dir nur die Eigenschaften des Interior - Objektes genauer ansehen. Frage alle Ereignisse ab und schreibe sie in eine Variabel.
Abgesehen davon halte ich den dir vorgeschlagenen Weg von Hajo_Zi für den Besserer, da er sicher schneller ist und du nicht Unmengen Variabeln bereitstellen musst.
Der Code ist nur ein schnelles Beispiel. Es fehlt jegliche Funktionalität zum Fehlerabfang.

Sub Zellfarbeuebertragen()
Dim vFarbe1 As Variant, oFüllmuster As Variant, iWinkel As Integer
Dim vFarbe2 As Variant, sgVerlauf1 As Single, sgVerlauf2 As Single
With Selection.Interior
oFüllmuster = .Pattern
iWinkel = .Gradient.Degree
End With
With Selection.Interior.Gradient.ColorStops.Add(0)
vFarbe1 = .ThemeColor
sgVerlauf1 = .TintAndShade
End With
With Selection.Interior.Gradient.ColorStops.Add(1)
vFarbe2 = .ThemeColor
sgVerlauf2 = .TintAndShade
End With
With ActiveSheet.Cells(2, 4).Interior
.Pattern = oFüllmuster
.Gradient.Degree = iWinkel
.Gradient.ColorStops.Clear
End With
With ActiveSheet.Cells(2, 4).Interior.Gradient.ColorStops.Add(0)
.ThemeColor = vFarbe1
.TintAndShade = sgVerlauf1
End With
With ActiveSheet.Cells(2, 4).Interior.Gradient.ColorStops.Add(1)
.ThemeColor = vFarbe2
.TintAndShade = sgVerlauf2
End With
End Sub

Anzeige

18 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige