251 Aufrufe
Gefragt in Tabellenkalkulation von la-cm Mitglied (142 Punkte)
Hi Leute.

Hatte schon lange keine Anfrage, da bisher alles so lala gefunzt hat. Leider hab ich nun ein Problem, dass nicht so will, wie ich mir das vorstelle.

Ich habe eine Tabelle für eine Stundenplanung erstellt. Pro Tag 8 einzelne Zellen, welche mit einer bedingten Formatierung hinterlegt sind (solange Zelle leer ist - bestimmte Farbe).

Manchmal ist es erforderlich Zellen zu verbinden. Da die Planung vor "unbeabsichtigten" Änderungen geschützt sein muss, hab ich ein Macro erstellt, mit welchem Zellen verbunden werden können:

Sub verbinden()
ActiveSheet.Unprotect Password:="x" 'Passwort für Blattschutz anpassen
If Selection.MergeCells Then
Selection.UnMerge
Else
Selection.Merge
End If
ActiveSheet.Protect Password:="x" 'Passwort für Blattschutz anpassen
End Sub

Mit diesem Macro können Zellen trotz Blattschutz verbunden werden bzw. die Verbindung wieder aufgehoben werden. Leider ist dann aber auch die bedingte Formatierung weg. Hab schon daran gedacht mit einer ausgeblendeten Zelle die Formatierung nach der Aufhebung wieder herstellen zu lassen, kann diesen Vorgang jedoch nicht ins Macro einbauen.

Hat wer eine Idee

Danke im Voraus

la.cm

13 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi,

es gibt einen Makrorekorder, mit dem du aufnehmen kannst wie du die bedingte Formatierung von Hand erstellst. Den aufgenommenen Code kannst du dann für dein Makro aufbereiten.

Bis später, Karin
0 Punkte
Beantwortet von la-cm Mitglied (142 Punkte)
Hi Karin.

Das funktioniert so leider nicht bzw. liefert mir das nicht das gewünschte Ergebnis.

Mit dem oa. Makro ist es egal in welcher Spalte ich bin. Sobald ich mehrere Zellen markiere und das Makro ausführe, werden diese Zellen verbunden oder beim 2. Klick die Verbindung wieder aufgehoben.

Ich hätte mir eher vorgestellt, dass nach dem Aufheben der Zellenverbindung das Format einer Vorlage (später ausgeblendete Spalte) einfach auf diese wieder einzelnen Zellen kopiert wird - egal in welcher Spalte ich das Makro ausführe.

Danke für die Hilfe

la.cm
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi,

und WAS funktioniert nicht? Welchen Code hat der Makrorekorder denn aufgezeichnet? Ob du das Format von einer "Vorlage" überträgst oder neu erstellst ist gehupft wie gesprungen - anpassen musst du es so oder so.

Bis später, Karin
0 Punkte
Beantwortet von
Hi.

Leider sind meine "Programmierkenntnisse" sehr laienhaft, daher meine Anfrage auch ans Forum.

Wenn ich das Makro aufzeichne erhalte ich diesen Code:

Range("A1:A4").Select
    Selection.Copy
    Range("D1:D4").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End Sub

Bisher hab ich es nur geschafft, dass beim Ausführen des Makro - in diesem Fall - die Zellen "D1:D4" (aus Vorlage "A1:A2") wiederhergestellt werden. Ich will aber, dass beim nochmaligen Ausführen des Makro nicht nur die Zellenverbindung aufgehoben wird, sondern, in die markierten Zellen (zwar in der gleichen Zeile aber egal in welcher Spalte ich bin) die Vorlage aus Spalte "A" kopiert wird.

Hoffe, ich konnte mich verständlich ausdrücken :)

Gruß la.cm
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi,

ich meinte nicht den Code für das Kopieren sonden den Code, wie du die bedingte Formatierung für die Zellen von Hand erstellst.

Bis später, Karin
0 Punkte
Beantwortet von la-cm Mitglied (142 Punkte)
Hierfür hab ich kein Makro.

Der Rahmen der jeweiligen Zelle wird lediglich mittels "Zellen Formatieren/Rahmen" und die Farbe über die "Bedingte Formatierung": Nur Zellen formatieren, die enthalten - Zellenwert kleiner oder gleich "" = Formatieren/Ausfüllen.

Oder welchen Code meinst du?

la.cm
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Schreibe ich so unklar? Lies meinen Beitrag vom 18.07.!!

Bis später, Karin
0 Punkte
Beantwortet von la-cm Mitglied (142 Punkte)
Hi Karin.

Mir würde ein Makro oder eine Anpassung der bereits gesendeten zu meiner Anfrage mehr helfen, als Deine - auf mich wirkende - Anleitung zur Selbstfindung des Problems.

Ich habe mich an dieses Forum gewandt, da mir hier bis dato am Besten nützliche und "praktische" Beispiele angeboten wurden. Leider hab ich nicht die Zeit bzw. ist es mein Projekt nicht wert, dass ich mich zum "VBA-Spezialisten" verändere.

Sorry nichts für ungut

la.cm
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi,

ein Forum ist dazu da, um bei der Lösung von Problemen Unterstützung zu geben, nicht um Komplettlösungen kostenlos zur Verfügung zu stellen. Man muss kein VBA-Spezialist werden, um die von Excel bereitgestellten Hilfsmittel wie Makrorekorder zu benutzen, wenn man darum gebeten wird, einen Code aufzuzeichen, der es dem Helfer erlaubt, das gepostete Problem zu lösen - schließlich bist du der einzige, der deine Arbeitsmappe kennt und wie du die bedingte Formatierung erstellt hast. Du hast ja gesehen, dass das einfache Kopieren nicht die Lösung für dein Problem ist und ich habe dir geschrieben, dass man die bedingte Formatierung neu erstellen muss - und dazu muss man wissen, wie du sie von Hand erstellt hast. Aber wenn es dir schon zuviel ist, bei der Lösung deines Problems selbst mit Hand anzulegen, bist du hier falsch - nicht immer gibt es fertige Lösungen, meistens kann man sie nur mithilfe des Fragestellers erarbeiten.

Bis später, Karin
0 Punkte
Beantwortet von la-cm Mitglied (142 Punkte)
Hi Karin.

Will hier keinen Streit vom Zaun brechen bzw. hatte ich bis dato immer positive Konversationen in diesem Forum.

Meine VBA-Kenntnisse sind sehr eingeschränkt und daher wende ich mich ab und zu an das Forum. War mir auch nicht klar, was du mit dem "Code für die bedingte Formatierung" gemeint hast. Nehme an, dass du das gemeint hast:

    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, _
        Formula1:="="""""""""""""
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Borders(xlLeft)
        .LineStyle = xlContinuous
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.FormatConditions(1).Borders(xlRight)
        .LineStyle = xlContinuous
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.FormatConditions(1).Borders(xlTop)
        .LineStyle = xlContinuous
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.FormatConditions(1).Borders(xlBottom)
        .LineStyle = xlContinuous
        .TintAndShade = 0
        .Weight = xlHairline
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 49407
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
End Sub

War der Meinung, dass es sich um eine simple Copy/Paste-Geschichte mittels Makro handelt. Mein Tabelle soll kein "Programm" werden sondern kleine "Komfortmakros/Buttons" enthalten. Die Zellenformatierung lässt sich ja auch manuell durchführen.

Gruß

la.cm
...