805 Aufrufe
Gefragt in Tabellenkalkulation von radi38 Einsteiger_in (7 Punkte)
Hallo

Habe eine Reihe von Tabellendokumenten mit jeweils 3-12 Tabellen erstellt.

Zweck, Auswertung verschiedener Artikel.

Der Aufbau (Spaltenanzahl, -bezeichnung und Formatierung) ist immer gleich.

Nun habe ich drei Spalten dieser Tabellen mit bedingten Formatierungen versehen. Diese sind in ihrer Form unterschiedlich (Farbe, Schriftgröße etc.) Das möchte ich ändern

Jetzt habe ich ein leeres Dokument erstellt und es meinen Vorstellungen entsprechend gestaltet.

Die in diesem Dokument vorhandenen Vorlagen „bedingte Formatierung“ möchte ich in meine vorhandenen Tabellendokumente übertragen.

Meine Vorstellung :

In den vorhandenen Tabellendokumenten jeweils eine leere Tabelle erzeugen. Die neuen bedingten Formatierung rein kopieren um diese dann mittels Pinsel in die jeweils vorhandene Spalten der einzelnen Tabellen einfügen.

Das mit dem Pinsel funktioniert ja leider nicht von Dokument zu Dokument.

Wenn das nicht klappt muss ich in jedem Tabellendokument die bedingte Formatierung manuell erstellen.

Hoffe, habe mich verständlich ausgedrückt. Is‘ gar nicht so leicht.

Gruß

Radi

26 Antworten

+1 Punkt
Beantwortet von m-o Profi (21.8k Punkte)

Hallo Robert,

das kannst du mit Offset machen:

Private Sub CommandButton1_Click()

Dim Zelle As Range, Bereich As Range
Set Bereich = Range("A1:ZZ100")
For Each Zelle In Bereich
Select Case Zelle.Value
  Case "si":
     Zelle.Offset(0, -1).Interior.ColorIndex = 4
  Case "no":
     Zelle.Offset(0, -1).Interior.ColorIndex = 5

End Select
Next Zelle

End Sub


Mit dem Befehl Zelle.Offset(0, -1) gehst du eine Spalte nach links.

Willst du die Zelle unter der angesprochenen Zelle einfärben, dann musst du das so machen:

Zelle.Offset(1, 0).Interior.ColorIndex = 5

Gruß

M.O.

0 Punkte
Beantwortet von robbi58 Mitglied (850 Punkte)
Diese Lösung ist für mich perfekt. Ich werde morgen mal ein Blatt nach meinen Bedürfnissen zusammenstellen und all die Ideen und Lösungen einbauen, welche ich durch dieses Forum gewonnen habe.

Danke Robert
0 Punkte
Beantwortet von robbi58 Mitglied (850 Punkte)

Nun habe ich fast alles perfekt gelöst. Ein Arbeitsblatt für Schüler, eines für Lehrer und eines ohne Makros. Ein kleines Problem habe ich noch mit dem Leeren der Zellen im Arbeitsblatt Klapustri_S:

Ich möchte die gefärbten Zellen leeren und zwar mit folgender Formel (damit erspare ich mir die Eingabe der Zellen):

Dim rng As Range
   For Each rng In ActiveSheet.UsedRange
      If rng.Interior.ColorIndex = 40 Then
         rng.ClearContents
         Else
         If rng.Interior.ColorIndex = 4 Then
         rng.ClearContents
         Else
         If rng.Interior.ColorIndex = 22 Then
         rng.ClearContents
      End If
   Next rng

Leider funktioniert dies nicht. 

Für alle Fälle habe ich mein Beispiel noch verlinkt.

https://filehorst.de/d/cvbrDpsG

Danke Robert

0 Punkte
Beantwortet von robbi58 Mitglied (850 Punkte)
Bearbeitet von robbi58

Hallo, liebes Forum!

Das Löschen der Eingabefelder (nicht geschütze Zellen) bekomme ich mit folgender Formel hin:

For Each zelle In Worksheets("Klapustri_S").Range("A1:AB35")
If zelle.Locked = False Then
If zelle.MergeCells Then
If zelle.Address = zelle.MergeArea(1).Address Then
zelle.MergeArea.ClearContents
End If
Else
zelle.ClearContents
End If
End If
Next zelle

Nun muss ich nur noch die Felder gleichzeitig einfärben (Farbnummer 22). 

Guter Rat ist gefragt!

+1 Punkt
Beantwortet von m-o Profi (21.8k Punkte)

Hallo Robert,

bei dem Arbeitsblatt Klapustri_S hast du außerdem noch das Problem mit den verbundenen Zellen. So funktioniert die Löschroutine:

 For Each rng In ActiveSheet.UsedRange
      If rng.Interior.ColorIndex = 40 Or rng.Interior.ColorIndex = 4 Or rng.Interior.ColorIndex = 22 Then
        rng.Interior.ColorIndex = 40    'Farbe des Eingabefeldes festlegen
        If rng.MergeCells Then          'Prüfen, ob verbundene Zellen
          If rng.Address = rng.MergeArea(1).Address Then     'falls ja prüfen, ob 1. Zelle der verbundenen Zelle
            rng.MergeArea.ClearContents     'falls ja, dann löschen
          End If
        Else
         rng.ClearContents       'Inhalt löschen, falls keine verbundene Zelle
       End If
     End If
   Next rng

Außerdem werden damit auch die Farben der Eingabefelder zurückgesetzt. Damit sollten deine zwei Fragen beantwortet sein.

Gruß

M.O.

0 Punkte
Beantwortet von robbi58 Mitglied (850 Punkte)
Super und danke!

Diese Datei ist für mich sowas wie eine Formatvorlage für meine weiteren Arbeitsblätter. So ist es für mich mit weniger Arbeitsaufwand verbunden alle 4 Formate zu produzieren (Lehrerversion, Schülerversion, Version ohne Makro, Übungsversion mit bedingter Formatierung).

Es hat zwar etwas gedauert, aber vor allem mit deiner Hilfe habe ich jetzt eine Vorlage, die entsprechend meinen Vorstellungen gestaltet ist.

Ich habe kein Problem, wenn du die Datei ins Forum als Download stellst, weil es sollen ja auch andere davon profitieren.

Danke vielmals, Robert
...