XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 19.08 einschl. 64 Bit
Wunsch-Aktionen:
Bei Änderung der Zelle C6 sollen C7 und E7 (sowie noch viele weitere, im Formular blau, z.B. I7) geleert werden.
Wenn in C6 "Neugerät" ausgewählt wird, soll in E7 und den Folgezellen beliebiger Text eingetragen werden können (also Gültigkeit E7 und alle SVERWEISe weg)
Wenn in C6 "Änderung" ausgewählt wird, soll in C7 und in E7 die Gültigkeit stehen.
Wenn ich nur in C7 eine Änderung der Familie mache, sollen außer C6 und C7 alle anderen Felder (z.B. I7) geleert werden.
Wenn in E7 etwas ausgewählt wird, soll in den Folgezellen das Ergebnis der SVERWEIS-Formel in Abhängigkeit von E7 stehen.
Wie kann ich diese Funktionalität in VBA abbilden? Ich komme auf keinen grünen Zweig, da immer der Else-Strang mit der Erstellung der Gültigkeit oder dann der Zugriff mit SVERWEIS mit Laufzeitfehler quitiert wird. Zur Reproduzierbarkeit: auswählen von "Neugerät" in C6 => Laufzeitfehler auswählen von "Änderung" in C6 => Laufzeitfehler neuer Wert in C7 ...
Wie kann ich den Bereich der Folgezellen auf ein Mal leeren, mit dem aktuellen Code dauert es etwas.
Die Maske ist sowohl zur Eingabe, als auch zur Überprüfung vorgesehen. Die Frage war eben, wie kann ich größere Texte lesbar in nur eine kleine Zelle unterbringen, darum sind sie verbunden. Direkt nebeneinander liegende blaue Zellen gehören zusammen.
erst mal zur Ausführung des Change-Ereignisses. Du änderst in Deinem Code ja noch eine Reihe weiterer Zellen, sodass der Code mehrfach durchlaufen wird. Wenn Du z.B. Neugerät wählst, wird E7 auf "" geändert - Nix durch Nix ersetzen ist auch eine Änderung - das Makro wird nochmals durchlaufen, Target ist E7, und entsprechend läuft das Makro in Dein VLOOKUP mit einer leeren Zelle E7 ... Tja, und das Makro wird ja bei jeder Zelländerung durchlaufen und da ist nicht nur die eine drin.
Nimm am Anfang Application.EnableEvents = False und am Ende wieder ... True.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
08.12.2016, 18:45 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2016, 18:46 von Rabe.)
Hi,
(07.12.2016, 21:50)schauan schrieb: Nimm am Anfang Application.EnableEvents = False und am Ende wieder ... True.
ich hatte es schon versucht, mit False die Änderung zu verhindern. Dann kam aber trotzdem immer der Laufzeitfehler, wenn ich manuell C7 geändert habe, beim Erstellen der Gültigkeit.
Ich habe es nun so gelöst, daß ich bei Neugerät die Gültigkeit entferne und bei "Änderung" die Gültigkeit von einer Hilfszelle durch kopieren wieder in der Zelle installiere.
PrivateSub Worksheet_Change(ByVal Target As Range) Dim rngLösch As Range Application.ScreenUpdating = False Application.EnableEvents = False
Für die genaue Syntax der Formel kannst Du übrigens selbige in eine Zelle eintragen, z.B. E6, und sie Dir dann mit debug.print Cells(6,5).Formula ausgeben lassen. Eventuell steht da bei Dir was anderes?
Ein Problem könnte auch sein, wenn die Formel beim Erzeugen einen Fehler, z.B. #NV bringt. Das könnte z.B. je nach Inhalt von C7 passieren.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
(09.12.2016, 15:16)schauan schrieb: Ein Problem könnte auch sein, wenn die Formel beim Erzeugen einen Fehler, z.B. #NV bringt. Das könnte z.B. je nach Inhalt von C7 passieren.
ich vermute, das ist es. Am Anfang steht da ja in C7 noch nix drin. Mal schauen, wie ich das umgehen kann und ob es überhaupt nötig ist.