502 Aufrufe
Gefragt in Tabellenkalkulation von mimadel Mitglied (117 Punkte)
Moin,

ich verzweifle gerade wieder mal ob meiner rudimentären VBA-Kenntnisse, ich hoffe, ich finde wieder mal exzellente Hilfe hier...

Ich möchte auf einem Tabellenblatt in Abhängigkeit vom Wert einer bestimmten Zelle bestimmte Zeilen ausblenden. Das funktioniert so auch gut, indem ich folgenden Code in dem betreffenden Tab.blatt eingebaut habe:

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
On Error GoTo errHdl

With Range("C28")

If .Value = "grün" Then
Rows("13:25").Hidden = True
Rows("26").Hidden = False
Else
Rows("13:25").Hidden = False
Rows("26").Hidden = True
End If
End With

Range("B30").Select

errHdl:
Application.EnableEvents = True
End Sub

Das Problem ist nur, dass danach dauerhaft der "Rückgängig"-Button deaktivert bleibt, auch wenn ich in anderen Tab.blättern arbeite und Zellen befülle, was nicht gewollt ist.

Warum ist das so bzw. (noch viel wichtiger für mich), wie kann ich den Code so umbauen, dass er NUR in einem bestimmten Tab.blatt aktiviert ist?

Vielen Dank vorab für Hilfe!

6 Antworten

0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Sorry, Nachtrag:
der Wert in Zelle "C28" wird durch ein anderes Makro erzeugt.
Weiß nicht, ob das von Belang ist.
Das Makro läuft jedenfalls einwandfrei, mit o.a. Einschränkungen...
0 Punkte
Beantwortet von
Hallo Mimadel ^^

Du bist gerade dabei Excel systematich lahm zu legen :-)

Das erste merkmal ist der Puffer überlauf von der Funktion Rückgängig

Das Calculate Ereignis ist schwierig zu händeln und wird daher eher germieden!

Da du den Wert von einem anderen Makro bekommst liesse sich das auch vermeiden.

Gruss Nighty
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Danke, Nighty_, hinein mit dem rostigen Messer in die offene Wunde... ;-))

Ich habe das mit dem Puffer nicht so recht verstanden, aber tatsächlich mit folgender Code-Änderung in ein ws_change-Ereignis die Lösung gefunden:

Private Sub Worksheet_Change(ByVal target As Range)
Application.EnableEvents = False
On Error GoTo errHdl

Set target = Range("C28")

If target.Value = "grün" Then
Rows("13:25").Hidden = True
Rows("26").Hidden = False

Else
Rows("13:25").Hidden = False
Rows("26").Hidden = True

End If
Range("B30").Select

errHdl:
Application.EnableEvents = True
End Sub

Die Hidden-Funktion funktioniert und danach steht mir in allen Tab.blättern auch wieder die Rückgängig-Funktion zur Verfügung.
Danke für den Hinweis!!!
0 Punkte
Beantwortet von
Hallo Mimadel ^^

*Du erinnerst mich an den Film Ticker hihi,da geht es um brisante Bomben!*

On Error GoTo errHdl


Ist so geächtet!

Ausnahmen!
Nur in kleinen gekapselten Modulen

Gruss Nighty
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Makro-technisch komme ich mir eher wie scratch aus ice-age vor.... ;-)

Hmm. Habe ich so oft gelesen bei meinen web-Recherchen, da dachte ich, es ist wichtig. Weh getan hat's ja nich, blockiert auch nich.

Aber du meinst, besser weglassen? Makro läuft dann bei mir immer noch *uff*

Danke dir für den Hinweis! :-)
0 Punkte
Beantwortet von
Hallo Mimadel ^^

Ein Puffer ist ein reservierter Speicherbereich um Informationen
fest zuhalten .-)

Zitat
"Hmm. Habe ich so oft gelesen"
Unzulänglichkeiten die im Netz stehen werden immer rasant verbreitet!

Meine Meinung zu on error!
Alles muss erlernt werden,von daher ist Kritik immer zweischneidig!

Zu deinem Problem nochmal!
Das Ein/Ausblenden wurde durch die Rückgängig Funktion permanent gespeichert,durch falschen Aufbau des Makros
im Calculate Ereigniss wurde es je nach Rechenkapazität und Volativen Funktionen millionenfach ausgeführt *kicher kicher*!

Mein Tip fuer dich!
Bevor du On Error nutzt,frage in Excel Foren nach Alternativen!
Die Grenzen einer Programmiersprache ist nicht die Syntax ,sondern die Phantasie der Entwickler!

Gruss Nighty
...