Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1584to1588
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

Starten "Sub Worksheet_Change" über WENN-Ergebnis

Starten "Sub Worksheet_Change" über WENN-Ergebnis
19.10.2017 18:43:29
Jens
Hallo Experten,
ich habe folgendes Problem. Ich folgendes VBA Skript zum Ausblenden von Zeilen erstellt, dass ü _
ber eine Bedingung in Zelle Y1 gestartet werden soll.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$Y$1" Then
If Target.Value = "j" Then
Rows("16:16").Hidden = True
Rows("17:17").Hidden = False
Else
Rows("16:16").Hidden = False
Rows("17:17").Hidden = True
End If
End If
End Sub

1)Über berechnete Formel starten, wie?
Funtioniert zwar, allerdings nur wenn ich ein "j" direkt in die Zelle Y1 eingebe. Sobald ich den Wert in Y1 über eine WENN-Formel berechne, funktioniert es nicht mehr, obwohl in der Zelle Y1 ein "j" über die Formel angezeigt wird.
2)Wie kann auf ein Targetzelle in einem anderen Tabellenblatt referenziert werden?
Sicher wie immer ganz einfach, wenn man weiß wie es geht :-)
Hoffe auf Eure Hilfe,
Grüße, Jens

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Starten "Sub Worksheet_Change" über WENN-Ergebnis
19.10.2017 19:15:05
AlterDresdner
Hallo Jens,
wenn Du statt Target.value Target.Text verwendest, sollte 1. geklärt sein.
Zu 2.: Target ist immer auf dem aktuellen Blatt, um ein Target auf einem anderen Blatt anzusprechen, musst Du dort eine Worksheet_Change-Routine basteln.
Wenn es nur um den Wert einer zelle in einem anderen Blatt geht: Thisworkbook.sheets("xyz").range("C17") sollte helfen.
Gruß der AlteDresdner
AW: Starten "Sub Worksheet_Change"
20.10.2017 09:48:01
Jens
Hallo AlteDresdener,
leider funktioniert es auch nicht mit Target.Text.
Grundsätzlich funktioniert die Routine zwar (aber das tat sie auch schon mit Target.Value). Funktioniert aber beides nur wenn ich den Wert direkt in die Zelle eingebe und nicht wenn der Wert über eine Formel berechnet wird. Das Problem ist unabhängig davon ob Buchstaben oder Zahlen in der Steuerzelle ausgegeben werden.
Andere Ideen?
Grüße,
Jens
Anzeige
AW: Starten "Sub Worksheet_Change"
20.10.2017 09:58:44
onur
Wenn du meine Antwort gelesen hättest, würdest du nicht fragen.
AW: Starten "Sub Worksheet_Change"
20.10.2017 10:03:51
Jens
Hallo onur,
habe ich erst eben gesehen. Bin als Neuling hier noch ganz so firm, sorry.
Allerdings bin ich anscheinend auch zu unerfahren, Deinen Hinweis in eine Lösung umzusetzen. Sie meine Antwort auf Deinen Hinweis.
AW: Starten "Sub Worksheet_Change"
20.10.2017 10:12:44
onur
Oder einfach aus Woksheet_Change Worksheet_Calculate machen.
AW: Starten "Sub Worksheet_Change" über WENN-Ergebnis
19.10.2017 19:45:27
onur
Zu 1:
Change reagiert dur auf direkte Änderungen (durch user oder vba - nicht durch formel), wenn du DAS willst, musst du (wie schon gesagt) .value am besten ganz weglassen und das calculate-ereignis nehmen.
AW: Starten "Sub Worksheet_Change"
20.10.2017 10:01:06
Jens
Hallo onur,
Deine Zeilen erklären, warum es nicht funtioniert. Allerding bin ich mir nicht sicher, ob ich Deine Lösung verstanden habe.
Wenn ich in der 3. Zeile meines Beispiels aus Target.Value nur Target machen, funktioniert es leider immer noch nicht. Das mit den calculate-ereignis habe ich nicht verstanden. Kannst Du mir hier helfen?
Viele Grüße
Jens
Anzeige
AW: Starten "Sub Worksheet_Change"
20.10.2017 10:08:22
onur
Den ganzen code (ohne Sub ... und Exit Sub natürlich) aus dem Change-Ereignis ausschneiden und vom Change- auf das Calculate-Ereignis kopieren.
AW: Starten "Sub Worksheet_Change"
20.10.2017 10:41:58
Jens
frage ist noch offen, kann mir jemand helfen?
AW: Starten "Sub Worksheet_Change"
20.10.2017 10:45:10
onur
Liest du meine Antworten nicht?
Private Sub Worksheet_Calculate()
20.10.2017 11:08:52
Matthias
Hallo Jens
Code ins entsprechende Tabelleblatt:
Option Explicit
Private Sub Worksheet_Calculate()
With Range("$Y$1")
If .Value = "j" Then
Rows("16:16").Hidden = True
Rows("17:17").Hidden = False
Else
Rows("16:16").Hidden = False
Rows("17:17").Hidden = True
End If
End With
End Sub
Geht auch noch einen Tick kürzer, aber probiers mal so.
Gruß Matthias
Anzeige
und hier eine kürzere Variante ...
20.10.2017 11:18:22
Matthias

Option Explicit
Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
With Range("$Y$1")
Rows("16:16").Hidden = .Value = "j"
Rows("17:17").Hidden = .Value  "j"
End With
End Sub

AW: Private Sub Worksheet_Calculate()
20.10.2017 11:29:40
Jens
Hallo Mathias,
Danke für Deine Hilfe. Wenn den Code so in mein Blatt übernehme, erhalten ich allerdings einen
Laufzeit fehler '....lange Nummer':Die Methode 'Hidden' für das Objekt Rande' ist fehlgeschlagen
- Excel funktioniert nicht mehr - Programm neu starten
Was mache ich falsch?
Grüße, Jens
keine Probleme ...
20.10.2017 11:40:32
Matthias
Hallo
Funktioniert ohne Probleme
Hast Du denn

Private Sub Worksheet_Change()
auch komplett gelöscht?
Gruß Matthias
Anzeige
AW: keine Probleme ...
20.10.2017 12:17:22
Jens
Hallo Mathias,
habe es gerade in einer Test-xls ausprobiert und da scheint es auch bei mir fehlerfrei zu laufen.
Der Fehler scheint durch ein externes Excel Plugin (ThinkCell) in Kombination mit VBA verursacht zu sein.
Erst mal vielen Dank für Deine Unterstützung beim Code.
Gruß, Jens
AW: keine Probleme ...
22.10.2017 13:13:37
Hajo_Zi
Hallo Jens,
aus dem Beitrag hätte ich gelesen das es gelöst ist.
Falls nicht habe ich keine Information gefunden wie ich das nachbauen soll um es zu testen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster, Test, Mappe, Beispiel, Fehler, Kalender usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
Es sollte ein aussagekräftiger Name sein.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige