Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
772to776
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
772to776
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

WorksheetChange an/aus ?

Worksheet_Change an/aus ?
19.06.2006 14:38:49
Hansi
Hallo Leute,
Ich würde gerne über einen Button in der Symbolleiste eine Worksheet_Change Ereignis in der gerade activen Tabelle ein und auch wieder ausschalten können.
Ist dies überhaupt möglich?
Danke schonmal für Eure Hinweise...
Grüße
Hansi

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change an/aus ?
19.06.2006 14:46:40
Andi
Hi,
wäre Dir auch damit gedient, alle Ereignisse auszuschalten? Dann geht's so:

Private Sub CommandButton1_Click()
Application.EnableEvents = Not Application.EnableEvents
End Sub

Wenn Du den jeweiligen Zustand auf dem Button angezeigt haben willst, dann so:

Private Sub CommandButton1_Click()
Application.EnableEvents = Not Application.EnableEvents
CommandButton1.Caption = Application.EnableEvents
End Sub

Wenn Du nur diese eine Ereignis ausschalten möchtest, dann musst Du eine Boolsche public-Variable deklarieren, die Du im Klick-Ereignis des Button umschaltet, und den Code im Change-Ereignis führst Du dann eben nur aus, wenn die Variable true ist.
Schönen Gruß,
Andi
Anzeige
AW: Worksheet_Change an/aus ?
19.06.2006 14:50:08
Hansi
Hallo Andi,
Vielen Dank für Deine schnelle Antwort.
Allerdings verstehe ich nur Bahnhof usw...
Boolsche Public Variable ???
Ich hab mir einen Button in der Symbolleiste eingebaut, wenn ich da drauf drücke, sollte das Change Ereignis an oder ausgeschaltet sein.
Kannst Du mir das nochmal genauer erklären?
Grüße
Hansi
AW: Worksheet_Change an/aus ?
19.06.2006 14:57:44
andi.kiessling@web.de
Hi,
wie gesagt, wenn eine Lösung, bei der alle Ereignisse ausgeschaltet werden für Dich in Frage kommt, dann reicht es ins Klick-Ereignis Deines Button folgende Zeile zu schreiben:
Application.EnableEvents = Not Application.EnableEvents
Wenn nur das Worksheet_Change-Ereignis ausgeschaltet werden soll, andere Ereignisse aber weiterhin zur Verfügung stehen sollen, dann brauchen wir die Sache mit der Public Variablen; in dem Fall meld Dich einfach nochmal.
Schönen Gruß,
Andi
Anzeige
OT
19.06.2006 14:59:48
Andi
Verdammte Eingabe-Formulare!!!
Kann irgendjemand mit Mod-Rechten hier vielleicht meinen Namen mal kurz editieren? Ich seh mein Postfach schon im Spam versinken...
Merci,
Andi
AW: Worksheet_Change an/aus ?
19.06.2006 15:02:18
Hansi
Hallo Andi,
Ich hätte gerne nur das Worksheet_Change Ereignis beim 1. Klick auf den Button eingeschaltet und beim 2. Klick wieder ausgeschaltet.
Danke für Deine Hilfe!
Grüße
Hansi
AW: Worksheet_Change an/aus ?
19.06.2006 15:15:55
Andi
Hi,
auch kein Problem; erzeuge im VB-Editor unter Einfügen ein Modul und kopiere dort folgende Zeile hinein:
Public ausfuehren As Boolean
dies ist jetzt unsere public-Variable; public bedeutet, dass sie nicht nur innherhalb eines Ereignisses oder einer sub zur Verfügung steht, sondern prozedurübergreifend.
Ins Click-Ereignis Deines Button kopioerst Du folgende Zeile:
ausfuehren = Not ausfuehren
damit wird bei jedem Klick auf den Button der Zustand unserer pubblic-Variablen umgeschaltet, von True auf False oder anders rum.
Im Change-Ereignis musst Du dann diesen Zustand abfragen, und den Code dementsprechend ausführen oder nicht; das sieht so aus:

Private Sub Worksheet_Change(ByVal Target As Range)
If ausfuehren = True Then
'hier Dein Code
End If
End Sub

Schönen Gruß,
Andi
Anzeige
AW: Supi, AAAAAber
19.06.2006 15:39:52
Hansi
Hallo Andi,
Mensch Super, das klappt schonmal topski...
Allerdings hätte ich da noch eine Schwierigkeit.
Ich hätte gerne, das dieser Knopp in jeder Arbeitsmappe (ob neu oder geöffnet) und für jedes Tabellenblatt, also quasi immer funktioniert.
Im Moment funktioniert es ja nur, weil ich im Tabellenblatt den Code eingetragen habe, frage ist also, funktioniert das auch global?
Hier mein Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ausfuehren = True Then
Target.Interior.ColorIndex = 35
Else
Target.Interior.ColorIndex = xlNone
End If
End Sub

Grüße
Hoffi
Anzeige
AW: Supi, AAAAAber
19.06.2006 16:07:25
Andi
Hi,
sorry, da fällt mir jetz grad nix brauchbares ein; auch wenn der Button in jeder Mappe zur Verfügung steht, müsste man ja immernoch in jeder Mappe die Abfrage ins Cange-Ereignis einbauen.
Vielleicht hat ja jemand anderes ne Idee, deshalb noch offen...
Schönen Gruß,
Andi
AW: Supi, AAAAAber
19.06.2006 16:13:28
Hansi
Hallo Andi,
Trotzdem Vielen Dank an Dich.
Falls noch jemand diesen Thread liest, versuche ich nochmal den Hintergrund zu erklären.
Ich möchte gerne über diesen Knopf, immmer die Zelle, in der ich mich gerade befinde, grün einfärben. Und das aber nur solange, bis ich den Knopf wieder drücke.
Eine Zelle einzufärben, bekomme ich noch hin, aber wie erreiche ich es, das ich, wenn ich die eine Zelle verlasse und in die nächste Springe, diese dann auch eingefärbt wird?
Das geht doch nur im Worksheet_Change Ereignis, und das funktioniert ja nicht global, oder?
Grüße
Hansi
Anzeige
AW: Supi, AAAAAber
19.06.2006 16:33:39
Erich G.
Hallo Hansi,
das geht über das Arbeitsmappen-Ereignis Workbook_SheetSelectionChange.
Der Code gehört also in den Code von "DieseArbeitsmappe".
Du bekommst dabei auch das jeweilige Blatt als Parameter.
Durch Abfrage des Blattnamens oder der Nummer könntest du auch den Wirkungsbereich einschränken,
also z. B. Blätter davon ausschließen.
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' If Sh.Name = "Tabelle1" then Exit Sub
If ausfuehren = True Then
Target.Interior.ColorIndex = 35
Else
Target.Interior.ColorIndex = xlNone
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Supi, AAAAAber
19.06.2006 16:40:05
Hansi
Hallo Erich,
Vielen Dank Dir schonmal, kann es erst später testen, da ich nun zu einem Kunden muss.
Gebe Dir aber Bescheid ob es funktioniert.
Also, Vielen Dank.
Grüße
Hansi
AW: Supi, AAAAAber
19.06.2006 16:49:39
Andi
Hi,
aber er wills ja auch Mappen-übergreifend;
da seh ich eher das Problem. Blatt-übergreifend is klar...
Schönen Gruß
Andi
AW: Supi, AAAAAber
19.06.2006 16:53:39
Horst
Hi,
Klassenmodul in der PERSONL.XLS
Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
arbeitet dann applicationweit.
mfg Horst
AW: Supi, AAAAAber
19.06.2006 17:25:31
Andi
Hi,
cool kannte ich noch nicht.
Kann ich also für heute mal wieder nen Lernerfolg verbuchen, danke dafür!
Schönen Gruß,
Andi
Anzeige
AW: Supi, AAAAAber
20.06.2006 08:58:03
Hansi
Hallo an alle,
Vielen Dank erstmal für Eure Bemühungen...
Wie Andi schon sagte, möchte ich gerne das die Eigenschaft in jeder Mappe und in jedem Tabellenblatt zur Verfügung steht. Die soll wohl das Ereignis von Horst tun, Hmmmm, aber wie stelle ich das jetzt an? Wo schreib ich das genau rein?
Könnt Ihr mir da bitte nochmal kurz helfen.
Vielen Dank schonmal.
Grüße
Hansi
AW: Supi, AAAAAber
20.06.2006 10:19:42
Erich G.
Hallo Hansi,
eine Möglichkeit:
Die Färbung macht ein XLA, gesteuert wird mit einem XLS,
ausgeführt wird in jeder Mappe auf jedem Blatt, solange das XLA geladen ist.
Das XLS kann man nach dem Einschalten schließen und später wieder öffnen, um die Steuerung zu ändern.
Hier das XLA und das XLS, beide ins gleiche Verzeichnis (oder das XLA ins Startverzeichnis):
https://www.herber.de/bbs/user/34481.xla

Die Datei https://www.herber.de/bbs/user/34482.xls wurde aus Datenschutzgründen gelöscht

Kleiner Scherz nebenbei:
Der Umschaltbutton wechselt zwischen drei Zuständen: Färben, Entfärben und Nixtun.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Supi, AAAAAber
20.06.2006 10:30:23
Hansi
Hallo Erich,
vielen Dank...
allerdings, wenn ich die xls starte, bringt er mir im Workbook_Open Ereignis einen Fehler: Fehler beim Kompilieren: Projekt oder Bibliothek nicht gefunden.
Ich hab das xla zuerst installiert, und öffne dann die xls, dann kommt der Fehler...
Grüße
Hansi
AW: Supi, AAAAAber
20.06.2006 10:54:49
Hoffi
Hallo Hansi,
Versuche es mal so:
füge über 'Einfügen' ein neues Klassenmodul hinzu, Name: clsHansi
in dieses Klassenmodul schreibst Du:
Option Explicit
Public WithEvents App As Application

Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If ausfuehren = True Then
Target.Interior.ColorIndex = 35
End If
End Sub

Und in 'Diese Arbeitsmappe' schreibst Du:
Option Explicit
Dim AppObject As New clsHansi

Private Sub Workbook_Open()
Set AppObject.App = Application
End Sub

Dann speicherst Du das ganze, schließt Excel und öffnest es wieder.
Nun sollte dein Knopf funktionieren.
Grüße
Hoffi
P.S. Rückmeldung wäre nett...
Anzeige
AW: Supi, AAAAAber
20.06.2006 11:14:25
Erich G.
Hi Hansi,
geh in der XLS mal in den VBA-Editor und schau unter Extras - Verweise.
Da steht vielleicht eine Eintrag mit NICHT GEFUNDEN: ApplEvt_Faerben
Ob der Eintrag da ist oder nicht:
Geh dann auf durchsuchen und wähle die AppEvent_Farbe.xla aus.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Topski!
20.06.2006 11:23:19
Hansi
Hallo Ihr beiden,
Super, Vielen Dank, klappt beides bestens!!!
Vielen Dank auch an Andi und Horst für Eure Unterstützung.
Jetzt kann der Hansi gleich zufrieden nach Hause gehen :-)
Ist ja Fussball heute :-) (2:1 für uns)
Bis dann...
Grüße
Hansi
AW: Danke für die Rückmeldung o.T.
20.06.2006 11:44:42
Hoffi
:-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige