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