Frage von harrywepper, 43

Wie kann man in Excel nicht nur die Inhalte, sondern auch die Formate auf ein anderes Tabellenblatt übertragen?

Liebe Exceler,

ich habe eine weitere Excel-Frage:

Wie kann man in Excel nicht nur die Inhalte, sondern auch die Formate auf ein anderes Tabellenblatt übertragen?

Situation:

Ein Tabellenblatt heißt "Eingabe", Hier ist die Spalte A mit vielen Wörtern und Sätzen belegt. Einige sind fett gehalten, andere unterstrichen...

Ein anderes Tabellenblatt (z,B. S1)(bzw. mehrere, sonst könnte ich das ja von Hand kopieren, was am einfachsten wäre!) soll auf den Inhalt und auf die Formatierung (fett ....) von "Eingabe" zugreifen. Das geht ja normalerweise mit =Eingabe!A1 .....

Aber auf diese Weise werden ja nur die Inhalte übernommen.

Geht das in Excel überhaupt, dass nicht nur der Wert, sondern auch fett und ähnliches übernommen werden?

Danke euch schon mal!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Ninombre, Community-Experte für Excel, 34

Wenn die Formatierungen nicht als bedingte Formatierung über feste Regeln gesetzt werden (dann könnte man die bed. Formatierung auf den anderen Tabellenblättern nachstellen), sondern manuell eingerichtet wurde, kann man diese Formatierungen nur mit einem Makro übernehmen.

Beim Kopieren via Makro werden die Formatierungen standardmäßig übernommen.

Sub tt()
For i = 2 To Sheets.Count
Range("A1:A3").Copy Sheets(i).Range("A1")
Next
End Sub

kopiert von Tabellenblatt1  den Bereich A1:A3 und fügt ihn an gleicherstelle auf den anderen Tabellenblättern ein. Das kann man natürlich entsprechend anpassen auf Deinen Bedarf. Tabelle1 ist hier das tatsächlich erste Tabellenblatt, egal wie das heißt.

Allerdings sind dann die Werte fest eingetragen. Die ändern sich auf den anderen Tabellenblättern nicht, wenn sie bei Eingabe verändert werden. Das muss Du einschätzen, ob das so sein soll oder stattdessen ein Bezug auf die andere Zelle eingetragen werden soll


Kommentar von harrywepper ,

Hallo Ninombre,

vielen Dank erst einmal für deinen Tipp. Ich habe gedacht, dass das des Rätsels Lösung ist.

Ich habe den Text des Makros so kopiert, wie du ihn augeschrieben hast, die eine Stelle auf A1:A8 geändert, weil in meiner Testdatei in Tabelle1 erstmal nur da was Formatiertes drin stand.

Es waren noch 2 weitere Tabellen geöffnet, in welche ich hineinkopieren wollte.

Aber es passierte nichts! Es ging nach dem "Ausführen" lediglich der Dialog bzgl. des Makros auf. (Keine Fehlermeldung!)

Woran kann es gelegen haben?

Kommentar von harrywepper ,

Mann, es hatte genau einmal geklappt. Ich habe es exakt so übernommen, wie du es geschrieben hast. Mit A1:A3

Und dann leider nicht mehr. Trotz mehrmaliger Versuche.

Steht dieses A1:A3 für die Zellen, die man kopieren will? Er hat aber bei dem einen erfolgreichen Versuch alles kopiert!

Wofür steht dieses Range"A1"?

Muss ich das auch verändern?

Kommentar von Iamiam ,

Range("A1") heißt Bereich A1 im jeweiligen WorkSheet(i). Dahin soll der 3er-Zellenblock kopiert werden (was jeweils A1:A3 ergibt)

Kann es sein, dass nach dem 1. Durchlauf das Zielblatt aktiviert ist?

Dann hilft

  • Worksheets("Eingabe").activate

eingefügt als Zeile nach For i=.....

oder etwas erweitert (und genauer definiert)

  • worksheets("eingabe").range("a1:a3").copy sheets(i).range("a1")

Ich weiß sowas nie auswendig, muss ich auch immer erst probieren.

Beachte aber, dass der Befehl nur die ganze Zelle erfasst, und somit auch das Format der ganzen Zelle. Hast Du einzelne Zeichen abweichend formatiert, wird das nicht erkannt und übertragen, da müsste man dann eine langwierige Unterschleife für jedes Zeichen machen (tu ich mir jetzt nicht an und würde auch lange Laufzeit haben, wäre aber machbar, auch für Teilformate wie nur Bold und Farbe, auch abweichender Font+Größe)

Der Befehl, um nur Formate einzufügen, heißt

pastespecial(xlformats)   Werte:(xlvalues) Kommentare:(xlcomments)

Kommentar von Iamiam ,

es waren noch zwei weitere Tabellen geöffnet

Meinst du wirklich Tabellen? die sind immer "geöffnet", wenn eine Datei offen ist, nur nicht "aktiviert"(activate) oder "ausgewählt"(select).

Oder meinst Du Blätter in anderen -geöffneten- Dateien?

Das wäre dann wesentlich komplizierter und da bräuchte man auch die Namen von Dateien und Blättern.

Andere Dateien werden üblicherweise über "Fenster" angesprochen, nicht über Datei (wenn sich nicht in VBA was getan hat)

Kommentar von Ninombre ,

A1:A3 war der Bereich, der kopiert wird. Das A1 ist die "Startzelle", ab der der kopierte Bereich eingefügt wird.

Wohin hast Du den Code für das Makro kopiert? Nach meinem Entwurf gehört er auf das Tabellenblatt 1, also zu der Quelle der kopierten Daten. Wenn es in einem eigenen Modul steht, dann muss man das Tabellenblatt der Quelle explizit benennen:

Sub tt()
For i = 2 To Sheets.Count
sheets(1).Range("A1:A3").Copy Sheets(i).Range("A1")
Next
End Sub

statt sheets(1) kannst Du auch sheets("Eingabe")
schreiben, also den Namen des Tabellenblatts verwenden.

Expertenantwort
von Oubyi, Community-Experte für Excel, 24

Es gibt die Excel4-Funktion
ZELLE.ZUORDNEN()
Mit deren Hilfe könnte man da VIELLEICHT etwas machen, indem man das Format der Quellzelle ausliest und für eine Bedingte Formatierung der Zielzelle nutzt. Das ist allerdings etwas aufwendig und ich weiß auch noch nicht, ob es überhaupt klappt. Deshalb stelle ich jetzt erstmal die Frage, die auch Ninombre gestellt hat, nämlich, ob es vlt. eine Bedingte Formatierung der Quellzelle gibt.
Außerdem frage ich noch, ob Dir vlt. Ninombres Makro die Lösung bringt.
Falls beide Antworten "Nein" lauten, kannst Du Dir ja mal diese Seite (s.u.) ansehen oder selbst zu ZELLE.ZUORDNEN() googlen.
Wenn Du damit nicht klar kommst, schreibe hier eine Kommentar, dann sehe ich mal, was ich machen kann.

http://answers.microsoft.com/de-de/msoffice/wiki/msoffice_excel-mso_other/die-ex...

Kommentar von Oubyi ,

P.S.: Ich habe jetzt schon mal ein bisschen getüftelt und kann sagen, dass es auf diese Weise klappt, allerdings nur mit zwei Hilfsspalten (Beim Versuch einer direkten Einbindung in eine Bedingte Formatierung stürzt Excel bei mir ab: "Nicht genügend Speicher"??!) Zudem  wird nach einer Formatänderung erst upgedatet, wenn Du F9 drückst oder eine neue Eingabe machst oder F2 und ENTER drückst oder in eine Zelle Doppelklickst und ENTER drückst.
Leider lässt sich das auch nicht durch ein zusätzliches Ereignis-Makro erledigen, da es - soweit ich weiß - kein Ereignis gibt, das auf eine Formatänderung reagiert.

Kommentar von harrywepper ,

Danke Oubyi,

auch für deine Hilfe. Dass du dich da so dermaßen reinhängst, war aber nicht so gedacht. Trotzdem super von dir.

Ich habe erst einmal das Makro deines Vorredners probiert. Leider ohne Erfolg. (s. Kommentar)

Wenn das nicht klappen sollte, probiere ich deine Version mal aus. Heute Abend beim Familienprogramm!

Ich werde Bericht erstatten!

Nette Grüße

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten