excel xp - format von zellen übergeben

Dieses Thema excel xp - format von zellen übergeben im Forum "Microsoft Office Suite" wurde erstellt von xeen, 1. Sep. 2003.

Thema: excel xp - format von zellen übergeben für meine excel tabellen benötige ich für mehrere Tabellen sowie Zellen den gleichen Inhalt. Das funktioniert soweit...

  1. für meine excel tabellen benötige ich für mehrere Tabellen sowie Zellen den gleichen Inhalt. Das funktioniert soweit auch ganz gut bloß wäre es nun auch sehr praktisch wenn ich bestimmte Formatierungen übernehmen lassen kann. Also das bei Änderung der Schriftfarbe in der 1. Tabelle sich alle weiteren danach richtigen, aber die Größe Ausrichtung etc der Zelle und Schrift soll sich nicht ändern.
    Gibt es da eine komfortable Lösung oder muss ich alles von hand ergänzen?
    xeen
     
  2. Hi xeen,

    prinzipell kann man alles mit Makros lösen.

    Wie ist den genau der Zusammenhang zwischen der geänderten Zelle und den anderen. Ein Beispiel wäre hilfreich.

    Gruß Matjes :)
     
  3. ist ne excel tabelle für meinen stundenplan, eienn großen fürs Zimmer, nen kleienr fürs mäppchen usw. Zur besseren Übersicht markiere ich verschiedene Fächer mit der gleichen Farbe.
    Aber jedes mal den Stundenplan 3x zu ändern ist nervig. Den Text übernimmt Excel ja schon bloß habe ich für die Farben noch keine gute öglichkeit gefunden. Bei Bedarf kann ich die Tabelle hochladen.
     
  4. Wenn es nur um die Farben geht, kannst du das doch mit der bedingten Formatierung lösen, oder reicht dir das nicht???
     
  5. @trigger4711:

    Das mit der bedingten Formatierung reicht leider nur für 3 Farben, da man soweit mir bekannt ist nur 3 Bedingung bzw. Farbformatierungen formulieren kann.
    Außerdem ist die bedingte Formatierung für jedes der 3 Blätter zu formulieren/zu ändern. :(


    @xeen:

    schick mir mal die Tabelle per mail - bitte im Excel97-Format. Ich bau dir dann den Makro ein.

    Wenn ich das richtig verstanden habe, ist die 1.Tabelle der Master. Also wenn in der 1.Tabelle eine Farbe geändert wird, soll sie auch in den anderen Tabellen geändert werden. Änderungen werden nur auf der 1.Tabelle vollzogen.

    Da das Ändern der Farbe kein Ereignis in Excel auslöst, stellt sich die Frage, bei welchem Ereignis die Farben in die zweite und dritte Tabelle übernommen werden sollen. Folgende Möglichkeiten gäbe es:

    a) Öffnen der Mappe
    b) Anklicken des 2. und 3. Blattes
    c) Alt+F8(Makroauswahl) und einen Makro aufrufen
    d) Einen Button auf dem ersten Blatt um den Makro auszulösen
    e) Speichern der Mappe

    Da die Farben dauerhaft gespeichert werden sollen würde ich e) empfehlen. Was meinst Du ?

    Gruß Matjes :)
     
  6. Realisierung e) -->beim Speichern Farben abgleichen' kann folgendermassen aussehen:

    Zunächst erst einmal der Makro StundenplanFarbenAktuallisieren(), der die eigentliche Arbeit ausführt.

    Er schaut nach, welche Farbe die jeweilige Zelle im Master-Stundenplan und im Slave-Stundenplan hat. Stimmen beide überein, passiert nichts. Sind sie unterschiedlich, setzt er die Hintergrundfarbe der Zelle im Slave-Stundenplan gleich der Zelle des Master-Stundenplanes.

    Die Zeilen- und Spaltenanzahl der Pläne muß gleich sein.

    Der Bereich der Pläne wird durch die Konstanten im Makro beschrieben. Die müssen den Plänen entsprechend angepaßt werden.
    Weiterhin ist es notwendig die Namen/Nummern der Tabellenblätter der Stundenpläne anzupassen, entweder die Blattnummern oder in Anführungszeichen die Blattnamen.


    Wie bekommt man den Makro in die Arbeitsmappe?

    a) Öffnen der Arbeitsmappe mit Excel
    b) Mit ALT+F11 den VB-Editor öffnen
    b1) Im Projet-Fenster->Project(Mappenname) selektieren
    b2) rechte Maustaste -> Einfügen -> Modul (es öffnet sich ein Fenster
    'Mappenname - Modul 1')
    b3) den Inhalt des grauen Fensters (Makro1) meines Wintotal-Beitrages
    markieren -> rechte Maustaste -> kopieren
    b4) Fenster->Mappenname - Modul 1' aktivieren und das ganze dort
    hineinkopieren (rechte Maustaste-> Einfügen)
    b5) Mit Alt+Q VB-Editor schliessen
    c) Excel-Datei speichern

    Jetzt kann man mit Alt+F8(Makroauswahl) und Makro aufrufen, diesen ausprobieren.


    Damit der Makro bei jeder Speicherung aufgerufen wird, ist noch eine Funktion Workbook_BeforeSave notwendig, die den Makro oben aufruft. Dazu geht man folgendermassen vor:

    a) Öffnen der Arbeitsmappe mit Excel (wenn nicht bereits geöffnet)
    b) Mit ALT+F11 den VB-Editor öffnen
    b1) Im Projet-Fenster->Project(Mappenname)->'diese Arbeitsmappe' doppelklicken
    (es öffnet sich ein Fenster->Mappenname - Diese Arbeitsmappe')
    b2) den Inhalt des grauen Fensters (Makro2) meines Wintotal-Beitrages markieren -> rechte Maustaste -> kopieren
    b3) Fenster->Mappenname - Diese Arbeitsmappe' aktivieren und das ganze dort hineinkopieren (rechte Maustaste-> Einfügen)
    b4) Mit Alt+Q VB-Editor schliessen
    c) Excel-Datei speichern

    Beim Speichern ist der Makro nun schon ausgeführt worden.

    Viel Spaß beim Ausprobieren

    Matjes :)

    Makro 1:
    Code:
    Option Explicit
    
    Sub StundenplanFarbenAktuallisieren()
      
    'Nummer oder Name Tabellenblätter (anzupassen)
    Const c_Tab_Master = 1
    Const c_Tab_Slave1 = 2
    
    'Definition des 1. Tabellenblattes (Master) (anzupassen)
    Const c_Plan1_1Zeile = 8
    Const c_Plan1_1Spalte = 1
    Const c_Plan1_letzteZeile = 16
    Const c_Plan1_letzteSpalte = 7
    
    'Definition des 2. Tabellenblattes (Slave1) (anzupassen)
    Const c_Plan2_1Zeile = 8
    Const c_Plan2_1Spalte = 2
    
    'Definitionen die für alle Tabellenblätter gilt
    Const c_Plan_AnzSpalten = c_Plan1_letzteSpalte - c_Plan1_1Spalte + 1
    Const c_Plan_AnzZeilen = c_Plan1_letzteZeile - c_Plan1_1Zeile + 1
      
      Dim z As Long, c As Long, anf_c As Long, anf_z As Long, b As Long
      Dim ws_m As Worksheet, ws_s As Worksheet
      
      Set ws_m = ThisWorkbook.Worksheets(c_Tab_Master)
      
      Set ws_s = ThisWorkbook.Worksheets(c_Tab_Slave1)
      anf_c = c_Plan2_1Spalte
      anf_z = c_Plan2_1Zeile
        
     ->Master Tab mit Slave Tab vergleichen
      For z = 0 To c_Plan_AnzZeilen - 1
        For c = 0 To c_Plan_AnzSpalten - 1
          If ws_m.Cells(c_Plan1_1Zeile + z, c_Plan1_1Spalte + c).Interior.ColorIndex <> _
             ws_s.Cells(anf_z + z, anf_c + c).Interior.ColorIndex _
             Then
             ws_s.Cells(anf_z + z, anf_c + c).Interior.ColorIndex = _
             ws_m.Cells(c_Plan1_1Zeile + z, c_Plan1_1Spalte + c).Interior.ColorIndex
          End If
        Next
      Next
    End Sub
    
    Makro 2:
    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      Call StundenplanFarbenAktuallisieren
    End Sub
     
  7. Das ist mir ja jetzt erst aufgefallen. Was für eine traurige und unnötige Beschränkung.


    Da habe ich mal wieder nicht richtig gelsen. Sorry :-[
     
  8. Mir ist noch was durch die Lappen gegangen :mad:

    Der Makro ist jetzt für 1 Master-Blatt und ein Slave-Blatt ausgelegt. Xeen's Stundenplan hat nur 2 Blätter.

    Man kann den Makro erweitern, indem man die Definitionen für weitere Slave-Tabellen hinzufügt und die Vergleichs-Schleife auch mit diesen Parametern aufruft.

    Gruß Matjes :)
     
  9. für den Teil des Aktualisierens habe ich noch BeforePrint und SheetActivate (Vorm Drucken und vorm anklicken der anderen Tabellen) hinzugefügt sodass man nicht immer erst speichern muss bevor man die Änderungen sehen will.
    Das ergibt dann das Folgende Makro 2 anstelle von Matjhes (übrigens vielen Dank für die Hilfe, das Makro funzt super! Aber eine Frage habe ich noch: gibt es eine Variable für die Tabellenrahmen (wo und welche Art)? Ich brächte nur die Variable, den Rest kann ich selbst erledigen :)):

    Code:
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Call StundenplanFarbenAktuallisieren
    End Sub
    
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      Call StundenplanFarbenAktuallisieren
    End Sub
    
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Call StundenplanFarbenAktuallisieren
    End Sub
    
    xeen
     
  10. Hi xeen,

    für die verschiedenen Umrandungen gibt es folgenden Satz:
    Code:
       ->Grid
       ->Bereich definieren, für den Gitternetzlinien gesetzt werden sollen
        Set r = ws_DB.Range(Cells(anf_zeile, anf_spalte), Cells(end_zeile, endspalte))
       ->Diagonalen von links oben nach rechts unten
        r.Borders(xlDiagonalDown).LineStyle = xlNone->Diagonalen von links oben nach rechts unten
       ->Diagonalen von rechts oben nach links unten
        r.Borders(xlDiagonalUp).LineStyle = xlNone
       ->äußerer Rahmen links
        With r.Borders(xlEdgeLeft)
          .LineStyle = xlContinuous:  .Weight = xlThin:   .ColorIndex = xlAutomatic
        End With
       ->äußerer Rahmen oben
        With r.Borders(xlEdgeTop)
          .LineStyle = xlContinuous:   .Weight = xlThin:  .ColorIndex = xlAutomatic
        End With
       ->äußerer Rahmen unten
        With r.Borders(xlEdgeBottom)
          .LineStyle = xlContinuous:   .Weight = xlThin:  .ColorIndex = xlAutomatic
        End With
       ->äußerer Rahmen rechts
        With r.Borders(xlEdgeRight)
          .LineStyle = xlContinuous:  .Weight = xlThin:   .ColorIndex = xlAutomatic
        End With
       ->innere Rahmen senkrecht
        With r.Borders(xlInsideVertical)
          .LineStyle = xlContinuous:  .Weight = xlThin:  .ColorIndex = xlAutomatic
        End With
       ->innere Rahmen waagerecht
        With r.Borders(xlInsideHorizontal)
          .LineStyle = xlContinuous:  .Weight = xlThin:  .ColorIndex = xlAutomatic
        End With
    
    Wenn Du im VB-Editor in einem Modul das Wort Borders schreibst, es dann mit der Maus selektierst und F1 drückst, geht die Hilfe zu diesem Thema auf.

    Gruß Matjes :)

    ps: der Makro 1 wurde noch für die Text-Farbe erweitert.

    Code:
      ....
    'Master Tab mit Slave Tab vergleichen
      For z = 0 To c_Plan_AnzZeilen - 1
        For c = 0 To c_Plan_AnzSpalten - 1
          If ws_m.Cells(c_Plan1_1Zeile + z, c_Plan1_1Spalte + c).Interior.ColorIndex <> _
             ws_s.Cells(anf_z + z, anf_c + c).Interior.ColorIndex _
             Then
             ws_s.Cells(anf_z + z, anf_c + c).Interior.ColorIndex = _
             ws_m.Cells(c_Plan1_1Zeile + z, c_Plan1_1Spalte + c).Interior.ColorIndex
          End If
          If ws_m.Cells(c_Plan1_1Zeile + z, c_Plan1_1Spalte + c).Font.ColorIndex <> _
             ws_s.Cells(anf_z + z, anf_c + c).Font.ColorIndex _
             Then
             ws_s.Cells(anf_z + z, anf_c + c).Font.ColorIndex = _
             ws_m.Cells(c_Plan1_1Zeile + z, c_Plan1_1Spalte + c).Font.ColorIndex
          End If
        Next
      Next
    ....
    
     
Die Seite wird geladen...

excel xp - format von zellen übergeben - Ähnliche Themen

Forum Datum
Excel 2010 - Filter, bedingte Formatierung Windows 7 Forum 27. Okt. 2014
Bedingte Formatierung Excel 2010 bei Datum Microsoft Office Suite 11. Okt. 2012
Excel 2007 - Text in Grafiklegende formatieren Windows XP Forum 16. Apr. 2012
Excel 2010 | Kopieren (Referenz) einer Zelle samt Formatierung, Hyperlink, etc. Microsoft Office Suite 1. Feb. 2012
Excel Tabelle -> Word mit bedingter Formatierung Microsoft Office Suite 21. Dez. 2010