Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA für bedingte Formatierung





Frage

Hi Leute Ein Anfrage an VBA Experten, bin leider Anfänger und suche eine Lösung für mein Prob. :-( Habe Mokro aufgezeichnet um Zelle zu formatieren, da in der bedingten Formatierung eine Einstellung der Zellausrichtung nicht möglich ist, löste ich das Prob folgendermaßen: Sub CellForm() ´ ´ CellForm Makro ´ ´ Tastenkombination: Strg+f ´ With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 90 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With End Sub Meine Frage ist nun kann dieses Makro erweitern, das wenn in Zelle A1:A20 "S" steht,soll in Zelle A2:A20, das oben gezeigte Makro ausgeführt werden, B.Z.W. soll die vertikale Ausrichtung in den Zellen A2:A20 wenn darüber in A1:A20 ="S" steht. Das geht zwar über das aufgezeichnete Makro, aber ich mir gern die Klicks zum Ausführen erspart. Wenn jemand eine Lösung wüsste, wäre ich sehr Dankbar. Vielen Dank für eure Hilfe, mfg mathew

Antwort 1 von Hajo_Zi

Hallo mathew ,

in dem Beispiel mußt Du nur Deinen Bereich anpassen und Deinen Code bei case einfügen. Ich gehe mal davon aus das es sich um Eingaben handelt.

Link zur Datei

Gruß Hajo

Antwort 2 von mathew256

Hallo Hajo
Erst mal vielen Dank für deine Hilfsbereitschaft. Es handelt sich nicht um Eingaben, sondern die Zellen A1 bis A20 sind mit der einer Formel belegt, welche den den Sonntag mit einem "S" darstellen. Nun soll mein Makro in Zelle A2 bis A31, die Zellen vertikal formatieren, welche neben einem "S" in A1:A31 stehen. Ich hoffe es richtig erklärt zu haben. Und noch mal vielen Dank Mathew

Antwort 3 von Hajo_Zi

Hallo Mathew,

dann das andere Beispiel von meiner Hompage.


Link zur Datei


Gruß Hajo

Antwort 4 von mathew256

Hig Hajo
Deine Datei hätte mir bestimmt geholfen, wennn ich nicht zu blöd wär sie anzuwenden. Werde noch ein bisschen VBA studieren müssen um das zu schnallen. Aber trotzdem vielen einen ruhigen Heilig Abend und nen schönes Weihnachtsfest für dich und deine Angehörigen
mfg mathew

Antwort 5 von Hajo_Zi

Hallo Mathew,

ich hoffe mal ich habe es richtig verstanden. Die Formatierung bei nicht "S" hast Du nicht angegeben.

Option Explicit

Private Sub Worksheet_Calculate()
´**************************************************
´* H. Ziplies *
´* 24.12.03 *
´**************************************************
´ diese Variante kostet natürlich Rechenleistung
´ da bei jeder Eingabe der Bereich Formatiert wird
´ HINTERGRUND
´ für Schrift RaZelle.Font.ColorIndex
Dim RaBereich As Range, RaZelle As Range
´ Bereich der Wirksamkeit
Set RaBereich = Range("A2:A20")
´ noch mehr Bereiche
´ Set RaBereich = Union(Range("C7:I26"), Range("L7:R26"), Range("U7:AA26"), Range("AD7:AJ26"))
´ ab Vesion XP braucht der Schutz nicht aufgehoben werden
´ Formatierung bei Schutz kann über Dialog Schutz eingestellt werden
´ ActiveSheet.Unprotect
For Each RaZelle In RaBereich
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
If RaZelle.Value = "S" Then
With RaZelle.Offset(-1, 0)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Else
With RaZelle.Offset(-1, 0)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End If
End If
Next RaZelle
´ ActiveSheet.protect
Set RaBereich = Nothing
End Sub

Gruß Hajo