Microsoft Excel

Herbers Excel/VBA-Archiv

Zellen überwachen und automatisch Inhalt und Forma

Betrifft: Zellen überwachen und automatisch Inhalt und Forma von: Tilo
Geschrieben am: 05.10.2014 12:00:29

Hallo Zusammen,

mein Problem wurde in einer ähnlichen Form schon einige Beiträge weiter unten behandelt, aber nicht so gelöst, dass ich etwas damit anfangen kann.

Es geht um den automatischen Übertrag von mehreren Zellen samt ihrer Formatierungen auf mehrere andere Tabellenblätter in der gleichen Arbeitsmappe. Die Ausgangszellen befinden sich alle in "Tabelle1" und die Zielzellen sind in "Tabelle2", "Tabelle3" und "Tabelle4".
Als Anfang meiner Versuche wählte ich ein Makro, welches eine Zelle eines Tabellenblattes automatisch überwacht und dann sobald eine Änderung vorgenommen wird, den Namen eines anderen Tabellenblattes ändert.

Diese funktionierende Makro habe ich veruscht etwas zu verändern, aber ohne Erfolg. Als beispiel habe ich eine Mappe mit den 2 Makros angehängt.

https://www.herber.de/bbs/user/92969.xlsm

Die meisten meiner Exel-Probleme konnte ich durch suchen und lesen hier im Forum lösen, aber diesmal ohne Erfolg.

Vielen Dank für Euer Wissen und Eure Hilfe

  

Betrifft: AW: Zellen überwachen und automatisch Inhalt und Forma von: Christian
Geschrieben am: 05.10.2014 14:37:19

hallo Tilo,
so zB:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim i As Long

    Application.ScreenUpdating = False

    With ThisWorkbook
        Set rng = .Sheets("Tabelle1").Range("A5:A7")
        If Not Application.Intersect(rng, Target) Is Nothing Then
            rngKey.Copy
            For i = 2 To 4
                .Sheets("Tabelle" & i).Range(rng.Address).PasteSpecial xlPasteValues
                .Sheets("Tabelle" & i).Range(rng.Address).PasteSpecial xlPasteFormats
            Next
        End If
    End With
    
    Set rng = Nothing
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub
Wenn du einen Wert in "Tabelle1", "A5:A7" änderst wird dieser Bereich in die anderen 3 Tabellen kopiert.

Gruß
Christian


  

Betrifft: AW: Zellen überwachen und automatisch Inhalt und Forma von: Tilo
Geschrieben am: 05.10.2014 15:43:15

Hallo Christian,

ich habe den Code eingefügt und bekomme aber eine Fehlermeldung. "Fehler beim Kompilieren: Variable nicht definiert". Wenn ich diese Meldung mit OK bestätige, dann wird "rngKey" (Zeile 12) markiert.

Dann hätte ich noch eine weitere Bitte. Lässt sich das so umbauen, dass ich eine Reihe von Tabellen mit Namen angeben kann, da es später erweitert werden soll und nicht sicher ist das die neuen Blätter 5, 6, und 7 sind, sondern vielleicht 10, 11, und 12.Von daher wären mir Namen lieber.

Danke und Gruß
Tilo


  

Betrifft: AW: Zellen überwachen und automatisch Inhalt und Forma von: Christian
Geschrieben am: 05.10.2014 15:50:48

hallo Tino,
ja, das war noch ein Fehler drin ... hätte ich vorher testen sollen ...
Ersetze "rngKey.Copy" durch "rng.Copy"

Zu deiner 2. Frage - Teste mal:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim i As Long
    Dim vntWks As Variant
    
    vntWks = Array("Tabelle2", "Tabelle3", "Tabelle4")

    Application.ScreenUpdating = False

    With ThisWorkbook
        Set rng = .Sheets("Tabelle1").Range("A5:A7")
        If Not Application.Intersect(rng, Target) Is Nothing Then
            rng.Copy
            For i = 0 To UBound(vntWks)
                .Sheets(vntWks(i)).Range(rng.Address).PasteSpecial xlPasteValues
                .Sheets(vntWks(i)).Range(rng.Address).PasteSpecial xlPasteFormats
            Next
        End If
    End With
    
    Set rng = Nothing
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub
Gruß
Christian


  

Betrifft: AW: Zellen überwachen und automatisch Inhalt und Forma von: Tilo
Geschrieben am: 05.10.2014 16:38:43

Hallo Christian,

nun tut der Code genau das was ich mir vorstelle und so wie ich es brauche. Ich kann beliebige Tabellen hinzufügen oder wieder entfernen.

Das i-Tüpfelchen wäre noch, dass auf jeder Tabelle in die eine Kopie der Zellen eingefügt wird, die Markierung vom Kopieren aufgehoben wird.

Dazu habe ich am Ende noch für jede Tabelle 2 Zeilen Code eingefügt, der Fett markierte, bevor das Bildschirmupdate wieder eingeschaltet wird:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim i As Long
    Dim vntWks As Variant
    
    vntWks = Array("Tabelle2", "Tabelle3", "Tabelle4")

    Application.ScreenUpdating = False

    With ThisWorkbook
        Set rng = .Sheets("Tabelle1").Range("A5:A7")
        If Not Application.Intersect(rng, Target) Is Nothing Then
            rng.Copy
            For i = 0 To UBound(vntWks)
                .Sheets(vntWks(i)).Range(rng.Address).PasteSpecial xlPasteValues
                .Sheets(vntWks(i)).Range(rng.Address).PasteSpecial xlPasteFormats
            Next
        End If
    End With
    
    Set rng = Nothing
    Application.CutCopyMode = False
    
    Sheets("Tabelle2").Select
    Range("A4").Select
    Sheets("Tabelle3").Select
    Range("A4").Select
    Sheets("Tabelle4").Select
    Range("A4").Select
    Sheets("Tabelle1").Select
    Range("A4").Select
    
    Application.ScreenUpdating = True
End Sub
Der Plan war eigentlich, einmal jede Tabelle und eine Zelle darin aus zu wählen und somit die Markierung vom kopieren zu entfernen.
Nun bekomme ich leider den Laufzeitfehler 1004: Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.

Auf jeden Fall danke ich dir schon vielmals bis hierher für deine Hilfe. Vielleicht kannst du mir dabei auch den entscheidenden Tipp geben.

Gruß
Tilo


  

Betrifft: AW: Zellen überwachen und automatisch Inhalt und Forma von: Christian
Geschrieben am: 05.10.2014 17:12:36

Hallo Tilo,
macht aus meiner Sicht erst mal keinen Sinn, aber wenn du das so willst, dann erstze den entspr. Teil mit folgendem Code:

    With ThisWorkbook
        Set rng = .Sheets("Tabelle1").Range("A5:A7")
        If Not Application.Intersect(rng, Target) Is Nothing Then
            rng.Copy
            For i = 0 To UBound(vntWks)
                .Sheets(vntWks(i)).Range(rng.Address).PasteSpecial xlPasteValues
                .Sheets(vntWks(i)).Range(rng.Address).PasteSpecial xlPasteFormats
                .Sheets(vntWks(i)).Activate
                .Sheets(vntWks(i)).Cells(4, 1).Select
            Next
        End If
        .Sheets("Tabelle1").Activate
        .Sheets("Tabelle1").Cells(4, 1).Select
    End With
Gruß
Christian


  

Betrifft: AW: Zellen überwachen und automatisch Inhalt und Forma von: Tilo
Geschrieben am: 05.10.2014 17:28:05

Hallo Christian,

nun ist es Perfekt! Problem/Anliegen gelöst

.Sheets("Tabelle1").Cells(4, 1).Select
habe ich noch auskommentiert, damit nicht in der Quelltabelle jedes mal die Zelle A4 aktiviert wird, sondern nur in den anderen Tabellen die als Ziel der Kopie dienen.
So kann man die Quelltabelle bearbeiten und wenn man dann in eine Zieltabelle wechselt, sind nicht jedes mal die Ziel-Zellen markiert. Ich weis nicht, vielleicht hätte ich das auch besser formulieren können, aber so funktioniert es wunderbar.

Nochmals vielen vielen DANK und einen schönen Rest-Sonntag dir!!!

Gruß
Tilo


  

Betrifft: Danke für die Rückmeldung (owT) von: Christian
Geschrieben am: 05.10.2014 19:14:34

Gruß
Christian


 

Beiträge aus den Excel-Beispielen zum Thema "Zellen überwachen und automatisch Inhalt und Forma"