Anzeige
Archiv - Navigation
1532to1536
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

AW: AW: Makro dynamisch anpassen

AW: AW: Makro dynamisch anpassen
03.01.2017 14:24:28
Anni
Hallo zusammen,
ich habe ein Tabelle mit 2 Tabellenblättern.
In Blatt 1 mache ich verschiedene Eingaben und
in Blatt 2 kommen dementsprechende Werte in Textform in den Zellen B2 bis B36 heraus.
Nun habe ich das folgende Makro geschrieben, das alle Zeilen ausblendet, die aufgrund der Angaben in Blatt 1 leer bleiben:
Sub Hide_Rows()
Dim c As Range
For Each c In Range("B2:B36")
If c.Value  "" Then
c.EntireRow.Hidden = False
Else
c.EntireRow.Hidden = True
End If
Next c
End Sub

Wenn ich die Angaben in Blatt 1 nun ändere, passt sich das Makro aber leider nicht an und es werden z.B. Zeilen, die nun gefüllt sind, nicht angezeigt.
Kann mir jemand helfen, wie ich mein Makro so verändere, dass es sich dynamisch mit den Angaben verändert?
Vielen Dank!
Hallo!
wie ich mein Makro so verändere, dass es sich dynamisch mit den Angaben verändert
Da müssen wir einiges klären. Grds. hast Du mit dem o.a. Makro eine gewöhnliche Routine, die Du manuell anstoßen musst; d.h. wenn Du bspw. willst, dass sich Blatt 2 schon bei jeder Eingabe in Blatt 1 mitverändert, müsstest Du auf eine Ereignis-Prozedur setzen. zB kannst Du Excel anweisen bei jeder Änderung in einem bestimmten Bereich auf Blatt 1 das Blatt 2 anzupassen, oder Du lässt die Anzeige in Blatt 2 immer dann anpassen, wenn es ausgewählt wird - denn wenn in Blatt 1 Eingaben gemacht werden, ist für gewöhnlich Blatt 2 nicht sichtbar. Damit hättest Du schon mal eine bestimmte Ebene von Dynamik.
Und die zweite Sache ist die, dass Du zunächst alle Zellen sichtbar machen musst um dann die jeweils betroffenen wieder auszublenden.
Hier mal noch auf Basis Deines Codes, ohne Ereignis-Prozedur:
Sub Hide_Rows()
Dim Ws As Worksheet: Set Ws = ThisWorkbook.Worksheets("Blatt 2")
Dim C As Range
With Ws
.Cells.EntireRow.Hidden = False
For Each C In .Range("B2:B36")
If C.Value = "" Then C.EntireRow.Hidden = True
Next C
End With
End Sub

Blatt-Name musst Du ggf. anpassen; beachte auch, dass ich hier das 2. Blatt eindeutig referenziere!
LG
Michael
_____________________________________________________________________________________
Vielen Dank dafür!
Ja tatsächlich gibt es einen Bereich im Blatt 1, den man als Anhaltspunkt nehmen kann, um festzustellen, ob sich etwas verändert hat.
Immer wenn sich der Wert in Zelle CP197 im Blatt 1 ändert, müssen sich die Zeilen in Tabellenblatt 2 anpassen und entsprechend ein- oder ausgeblendet werden.
Wie kann ich das in meinem Makro einbauen?
Lg, anni

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Warum neuer Faden? Na gut, dann hier weiter...
03.01.2017 14:39:55
Michael
@ Helfer: Ist ein Übertrag von hier https://www.herber.de/forum/archiv/1532to1536/t1532778.htm#1532778
Hallo Anni,
Statt Deines bisherigen Codes bzw. meines o.a. Codes (entferne diese aus der Mappe) kannst Du so vorgehen:
1) ReKlick auf den Tabellenblatt-Reiter Deines Blatt 1 (wie auch immer es heißt)
2) Im Kontextmenü nun auf "Code anzeigen" klicken
3) Füge nun den folgenden Code ein
Public AlterWert
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ws As Worksheet: Set Ws = ThisWorkbook.Worksheets("Blatt 2")
Dim C As Range
With Target
If .Address = "$CP$197" And .Count = 1 And _
.Value  AlterWert Then
With Ws
.Cells.EntireRow.Hidden = False
For Each C In .Range("B2:B36")
If C.Value = "" Then C.EntireRow.Hidden = True
Next C
End With
End If
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
If .Address = "$CP$197" And .Count = 1 Then AlterWert = .Value
End With
End Sub
4) Speichern, fertig.
Änderungen des Wertes in CP197 im Blatt 1 veranlassen nun die Änderungen in Blatt 2 (Zeilen aus-/einblenden). Im o.a. Code musst Du nur "Blatt 2" mit dem tatsächlichen Namen anpassen.
Passt?
LG
Michael
Anzeige
AW: Warum neuer Faden? Na gut, dann hier weiter...
04.01.2017 10:07:59
Anni
Hey, vielen Dank für Deine Antwort.
Gestern hat meine Antwortfunktion hier nicht funktioniert.
Deshalb musste ich einen neuen Beitrag verfassen.
Sorry dafür!
Ich habe den Code genauso eingegeben.
Leider verändern sich die ausgeblendeten Zeilen nicht, wenn ich die Angaben in Blatt 1 anpasse.
Da mir auch kein Fehler angezeigt wird, kann ich selbst nicht sagen, woran es liegt.
Trotzdem vielen Dank!!
Lg, anni
Kann ich nicht nachvollziehen...
04.01.2017 10:45:04
Michael
Anni,
...da müsstest Du jetzt schon einmal eine Bsp-Datei einstellen, die v.a. die Formeln enthält, nach deren Ergebnis ausgeblendet wird.
Im Blindflug kann ich Dir sonst hier nicht weiterhelfen.
LG
Michael
Anzeige
doch, stimmt schon,
04.01.2017 11:28:11
Michael
Hi,
eine durch Formeln verursachte Wertänderung in einer Zelle wirft kein Event.
Leere Tabelle, A2=2, B2=3, C2=Summe daraus.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
MsgBox "hier"
End If
End Sub

Es passiert nichts, wenn ich in A2 oder B2 Werte ändere.
In dem Fall wäre vielleicht ein anderes Event sinnvoller: die Aktion muß ja nicht passieren, solange Werte im ersten Blatt geändert werden, sondern erst, wenn ich in das zweite Blatt wechsle.
Also das Makro ins Modul vom zweiten Blatt kopieren:
Private Sub Worksheet_Activate()
Dim C As Range
For Each C In Range("B2:B36")
C.EntireRow.Hidden = C.Value = "" ' blendet ein und aus
Next C
End Sub
Gesundes neues Jahr & schöne Grüße, speziell an Michael,
Michael
Anzeige
Ist klar, aber dann gehen wir von anderen...
04.01.2017 11:35:47
anderen...
Hi Michael (und Anni),
...Voraussetzungen aus. Ich bin bisher davon ausgegangen, dass jene Zelle, die geändert wird, manuell geändert wird, und sich die Zellen die ein-/ausgeblendet werden sollen per Formel auf den Wert in dieser Zelle beziehen - so würde schon mein Change-Event greifen.
Active-Ereignis hab ich zu Beginn auch schon mal vorgeschlagen, aber dieser Faden (bzw. diese Fäden!) haben sich sehr chaotisch entwickelt, sodass dies nicht mehr verfolgt wurde (weil ich auch keine Rückmeldung dazu erhalten habe).
Deshalb wollte ich jetzt auch mal eine Bsp-Datei, damit klar wird, was Wunsch und optimale Umsetzung ist.
@ Michael: Prosit und viel Gesundheit :-)
LG
Michael
Anzeige
ok, dann warten wir halt mal... owT
04.01.2017 14:28:50
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige