Anzeige
Archiv - Navigation
1092to1096
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

worksheet change

worksheet change
viwaldi
Hallo,
In mein Arbeitsblatt werden aus einer Userform etwa 30 Daten eingetragen.
Anhand dieser Daten wird ein Diagramm erzeugt und ins Bildsteuerelement importiert.
Da manuelle Eingaben in dem Arbeitsblatt zulässig sind, habe ich das

Worksheet_Change(ByVal Target As Range)
eingesetzt, damit das Diagramm aktualisiert wird.
Das klappt soweit auch ganz gut, aber beim Verlassen der Userform wird bei jedem einzelnen (von 30 )Eintrag die Aktion ausgelöst.
Gibt es einen Code mit dem ich erst nach Abschluss der Eintragung aus der Userform das Worksheet_Change Ereignis aktiviere?
Ich bedanke mich schonmal im Voraus für eure Mühe, Hilfe und Anregungen
MfG viwaldi

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
verstehe Dich gerade nicht...
09.08.2009 10:11:09
Tino
Hallo,
, wenn ich bei mir Daten in die Tabelle aus einer Userform schreibe,
wird ein Diagramm das Bezug auf diese Zellen hat auch ohne irgendwelches zutun aktualisiert.
Gruß Tino
AW: verstehe Dich gerade nicht...
09.08.2009 10:27:57
viwaldi
Hi Tino,
im Diagramm wird quasi eine Skizze eines Bauteils erstellt.
Da die Größe der Skizze im Diagramm sehr große Differenzen haben kann und damit es maßstabsgerecht und nicht verzerrt dargestellt wird, erzeuge ich daraus ein Bild,
welches zugeschnitten und ins Bildsteuerelement geladen wird.
Und dafür brauche ich doch sehrwohl Makros!?
Hier mal der Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("B7:H45"), Target) Is Nothing Then
Exit Sub
Else
AltesBildLöschen
GruppenFormatieren
DiagrammAlsBild
Zurechtschneiden
BildInsImage
Sheets("Eingabe").Activate
End If
End Sub
MfG viwaldi
Anzeige
AW: verstehe Dich gerade auch nicht...
09.08.2009 10:50:05
Gerd
Hallo Viwaldi,
wenn sich die Zellenwerte ausschließlich nur nach Eingaben in einer Userform ändern, ist das
Worksheet_Change doch gar nicht erforderlich. Da kannst deine Prozeduren gleich an die
auslösende Aktion hängen UserForm_Deactivate, UserForm_Terminate, Click_Ereignis eines
Commandbuttons in der Form etc.)
Alle Ereigniscodes (außer denen in Steuerelementen) kannst mit
Application.EnableEvents= False unterdrücken u. (dann nicht vergessen)
mit Application.EnableEvents= True
wieder einschalten.
Gruß Gerd
AW: verstehe Dich gerade nicht...
09.08.2009 10:51:05
Nepumuk
Hallo viwaldi,
unterdrück doch die Events einfach mit Application.EnableEvents = False. Nach dem Eintragen der Werte das Einschalten nicht vergessen!!!
Damit nach dem Eintragen die Ereignisroutine trotzdem abläuft wird, kannst du sie ja per Code ansteuern. Dazu 1. die Routine öffentlich machen: Public Sub Worksheet_Change(ByVal Target As Range) und 2. so aufrufen: Call Tabelle1.Worksheet_Change(Tabelle1.Cells(7, 2)). An Stelle von Tabelle1 muss natürlich der Objektname deiner Tabelle stehen.
Gruß
Nepumuk
Anzeige
AW: verstehe Dich gerade nicht...
09.08.2009 10:53:59
Tino
Hallo,
wenn Du es über die Userform machst, stell doch die Eventmakros im Excel ab.
Application.EnableEvents = False
und am Schluss wieder auf True setzen, wichtig!
Ich würde die Makros in eine separate Prozedur stellen und entsprechend aus der Userform bzw. aus dem Change Ereignis bei Handeingabe in die Tabelle aufrufen.
Nur ein Beispiel nicht getestet
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("B7:H45"), Target) Is Nothing Then
Call SepProzedur
End If
End Sub
'in der Userform
Private Sub UserForm_Terminate()
Call SepProzedur
End Sub
'in ein Modul
Sub SepProzedur()
AltesBildLöschen
GruppenFormatieren
DiagrammAlsBild
Zurechtschneiden
BildInsImage
Sheets("Eingabe").Activate
End Sub
Gruß Tino
Anzeige
AW: verstehe Dich gerade nicht...
09.08.2009 11:34:45
viwaldi
Hi,
Erst mal vielen Dank für eure Antworten.
Mir ist jetzt aber was dazwischengekommen.
werde Tino's Vorschläge einarbeiten, melde mich aber erst ab 16.00 Uhr wieder
MfG viwaldi
Problem gelöst
09.08.2009 18:01:13
viwaldi
Hallo,
vielen Dank erst mal an Tino, Nepumuk und Gerd L.
zu Gerd: ich hatte ja geschrieben, dass auch manuelle Eingabe, nach der UserForm-Eingabe möglich sein sollten.
Aber ihr hattet alle den richtigen Code parat.
Habe es jetzt nach eurem Vorschlag umgearbeitet und habe die Eigenschaft am Anfang der UserForm auf "Application.EnableEvents = False" gestellt und nach der vorletzten Eingabe aus der UserForm auf
"Application.EnableEvents = True" gestellt, so dass erst nach der letzten Eingabe das Bildsteuerelement
aktualisiert wird.
Dann habe ich wie Tino vorgeschlagen hat, die Makros in einem separaten Modul nach einem Change-Ereignis laufen lassen und es klappt wunderbar.
Ich bedanke mich an dieser Stelle nochmal bei allen Excel-Meistern , die den unerfahrenen Dummköppen wie mir ständig aushelfen.
MfG viwaldi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige