Microsoft Excel

Herbers Excel/VBA-Archiv

Verlinkte Zeilen automatisieren | Herbers Excel-Forum


Betrifft: Verlinkte Zeilen automatisieren von: Dave
Geschrieben am: 29.01.2010 17:34:02

Hallo zusammen,

ich habe ein Aktualisierungsereignis. Mein Tabellenblatt ist in zwei mal 24 Zeilen (81-104) und (114-137)aufgeteilt, wobei nur die Spalte C beschreibbar ist. Ich würde generell die Zeilen 114-137 ausblenden, und diese mit jedem neuen Eintrag der Zeilen 81-104 Zeilenweise einblenden. Dabei sollte der Wert in 81 auch in 114 wieder auftauchen, der Wert in 82 wieder in 115 usw. ???

Für Anregungen freue ich mich!

Schönen Abend, Dave

  

Betrifft: AW: Verlinkte Zeilen automatisieren von: fcs
Geschrieben am: 31.01.2010 11:19:38

Hallo Dave,

hier mein Vorschlag.
Im VBA-Editor muss du die Prozedur unter dem Tabellenblatt einfügen, in dem die Aktionen ausgeführt werden sollen.

Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
  'Überwachung von Zellewertänderungen
  Dim Zelle As Range, Bereich As Range
  'Prüfen, ob geänderte Zellen mit dem Zellbereich überlappen
  Set Bereich = Me.Range("C81:C104") 'zu prüfender Zellbereich
  If Not Intersect(Target, Bereich) Is Nothing Then
    With Application
      .ScreenUpdating = False
      .EnableEvents = False
      Me.Unprotect 'nur einbauen, wenn Blattschutz verwendet wird
      ' geänderte Zellem abarbeiten'
      For Each Zelle In Target
        If Zelle.Row >= Bereich.Row _
            And Zelle.Row < Bereich.Row + Bereich.Rows.Count _
            And Zelle.Column >= Bereich.Column _
            And Zelle.Column < Bereich.Column + Bereich.Columns.Count Then
          'Bereich 33 Zeilen weiter unten anpassen
          With Zelle.Offset(33, 0)
            .Value = Zelle.Value
            .EntireRow.Hidden = IsEmpty(Zelle)
          End With
        End If
      Next
      Me.Protect 'nur einbauen, wenn Blattschutz verwendet wird
      .EnableEvents = True
      .ScreenUpdating = True
    End With
  End If
End Sub



  

Betrifft: AW: Verlinkte Zeilen automatisieren von: Dave
Geschrieben am: 01.02.2010 13:37:51

Hallo Franz,

vielen Dank! Wow. Ich habe noch ein Problem: ich schalte mit dem Befehl Application.Goto auf das entsprechende Tabellenblatt. Jetzt läuft aber der Code irgendwie endlos und beim debuggen, bleibt er in deinem Code bei "End With" hängen. Ich muss dazusagen, dass ich beim Umschalten auf das Tabellenblatt die Zeilen 81-104 mittels einer for schleife und Sheets("Tabelle1").Cells(Spalte1, 3).Value ="" lösche! Hat das vlt. damit zu tun, dass sich die Zeilen 114-137 dann endlos aktualisieren?

Schöne Grüße, Dave


  

Betrifft: AW: Verlinkte Zeilen automatisieren von: fcs
Geschrieben am: 01.02.2010 16:13:46

Hallo Dave,

es sollte eigentlich nicht zu einer Endlosschleife kommen. Deine For-Next-Schleife zum Löschen löst aber in jedem Durchlauf dieses Ereignismakro aus.

Deaktiviere in deinem Makro am Anfang die Ereignismakros mit
Application.EnableEvents = False
und aktiviere sie am Ende wieder mit
Application.EnableEvents = True

Zum Löschen der Inhalte in einem Zellbereich sollte man aber keine Schleifen benutzen, sondern direkt den gesamten Bereich ansprechen.

With Sheets("Tabelle1")
    .Range(.Cells(81, 3), .Cells(104,3)).ClearContents
'oder - wenn denn Leerstrings drinstehen sollen
    .Range(.Cells(81, 3), .Cells(104,3)).Value = ""
End With

Das geht deutlich schneller.

Gruß
Franz


Beiträge aus den Excel-Beispielen zum Thema "Verlinkte Zeilen automatisieren"