Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
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 erst nach Bestätigung

Worksheet.change erst nach Bestätigung
17.11.2014 08:44:16
Marcus
Hallo,
Folgendes will nicht ganz funktionieren.

Private Sub Worksheet_Change(ByVal Target As Range)
If MsgBox("Wollen Sie das Jahr wirklich ändern? Alle Einträge gehen verloren!", vbYesNo, " _
Sicherheitsabfrage")  vbYes Then
Dim rngJahr As Range
Set rngJahr = Intersect(Range("A1"), Target)
If Not rngJahr Is Nothing Then
If varJahr  rngJahr.Value Then Call Start_Format: varJahr = rngJahr.Value
End If
Else: Exit Sub
End If
End Sub

Die Abfrage kommt zwar, aber "Start_Format" wird direkt ausgeführt.
Kann mir jemand den Denkfehler aufzeigen?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet.change erst nach Bestätigung
17.11.2014 08:53:02
Matthias
Hallo
Vielleicht solltest Du besser auf:
= vbYes prüfen ?


Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngJahr As Range, varJahr&
If MsgBox("Wollen Sie das Jahr wirklich ändern? Alle Einträge gehen verloren!", vbYesNo, " _
Sicherheitsabfrage ") = vbYes Then
Set rngJahr = Intersect(Range("A1"), Target)
If Not rngJahr Is Nothing Then
If varJahr  rngJahr.Value Then MsgBox "Call Start_Format": varJahr = rngJahr.Value
End If
Else
Exit Sub
End If
End Sub

Ich hab zum Testen mal MsgBox "Call Start_Format" benutzt.
Musst Du natürlich wieder in: Call Start_Format ändern
Gruß Matthias

Anzeige
AW: Worksheet.change erst nach Bestätigung
17.11.2014 09:13:51
Marcus
Hallo Matthias,
das leuchtet erst einmal ein, ändert aber am Problem nichts, das Makro wird dennoch bereits vor beantwortung der Frage abgearbeitet.
Ich habe die Datei mal dran gehangen.
Nicht wundern, bin fleißig am werkeln, daher gerade etwas wüst.
Funktionsweise: Beim Ändern des Jahres "Normalschicht:A1" soll Start Format (Monate neu anordnen) erst nach Bestätigung erfolgen.
https://www.herber.de/bbs/user/93813.xlsm

AW: Worksheet.change erst nach Bestätigung
17.11.2014 09:43:22
Matthias
Hallo
das Makro wird dennoch bereits vor beantwortung der Frage abgearbeitet.
Das stimmt so nicht!
Das Makro wird erst und nur dann ausgeführt wenn Du es mit "Ja" bestätigtst
Das kannst Du ja mal so testen
Sub Start_Format()
MsgBox "Makro will jetzt starten"
Exit Sub
'...
Was Du siehst ist die bedingte Formatierung die Dich täuscht, das Makro wäre gestartet.
Desweiteren solltest Du schon zu Beginn prüfen, ob die Änderung auch in A1 gemacht wurde
Das prüfst Du überhaupt nicht!
Wenn Du in z.B. B2 etwas eingibst startet das Event genauso.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngJahr As Range
If Not Intersect(Target, Range("A1")) Is Nothing And Target.Count = 1 Then
If MsgBox("Wollen Sie das Jahr wirklich ändern? Alle Einträge gehen verloren!", vbYesNo, " _
Sicherheitsabfrage ") = vbYes Then
Set rngJahr = Intersect(Range("A1"), Target)
If Not rngJahr Is Nothing Then
If varJahr  rngJahr.Value Then Call Start_Format: varJahr = rngJahr.Value
End If
Else
With Application
.EnableEvents = False
.Undo 'Eingabe rückgängig machen
.EnableEvents = True
End With
Exit Sub
End If
End If
End Sub
Bitte an einer Kopie testen wg. UNDO
Diese Teil kannst Du bei Bedarf ja auch wieder entfernen.
Gruß Matthias

Anzeige
ich schau später wieder rein, bin jetzt offline oT
17.11.2014 09:45:19
Matthias

AW: ich schau später wieder rein, bin jetzt offline oT
17.11.2014 11:54:04
Marcus
llo Matthias,
das funktioniert soweit.
Aber ich steige nicht dahinter, warum die bedingte Formatierung dies tut.
Kannst Du mir das mal erläutern?

AW: ich schau später wieder rein, bin jetzt offline oT
17.11.2014 12:02:56
Rudi
Hallo,
die bed. Formatierung wird aktualisiert bevor das Eventmakro gestartet wird.
Gruß
Rudi

AW: ich schau später wieder rein, bin jetzt offline oT
17.11.2014 12:09:08
Marcus
Und ließe sich dies irgendwie verhindern?

bed. Formatierung
17.11.2014 12:32:21
Rudi
Hallo,
nur indem du auf die bed.Formatierung verzichtest und die Tabelle per VBA formatierst.
Gruß
Rudi

AW: bed. Formatierung
17.11.2014 12:33:57
Marcus
Ist das nicht an die workbook.enableevents gekoppelt?

AW: bed. Formatierung
17.11.2014 12:43:57
Rudi
Hallo,
schlimmer. Die bed. Formatierung hängt an der Bildschirmaktualisierung und wird immer wieder neu aufgebaut. Scrollen um 1 Zeile/ Spalte reicht. Zu viele bed. Formate können dir die Mappe komplett lahm legen.
Darüber hinaus ist Enableevents eine Eigenschaft der Application, nicht des Workbooks.
Gruß
Rudi
P.S. Für ein Hallo und einen Gruß sollte immer Zeit sein.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige