Microsoft Excel

Herbers Excel/VBA-Archiv

Makro mit anderem Makro an- ausschalten

Betrifft: Makro mit anderem Makro an- ausschalten von: Marcl
Geschrieben am: 10.09.2004 09:22:47

Hallo zusammen,

ich habe in einem Blatt folgendes Makro stehen:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 1 And (Target.Column < 5 Or Target.Column > 29) Then Exit Sub
If Target.Value <> "x" Then
If Target.Value <> "" Then
    Application.EnableEvents = False
   Application.Undo
    Application.EnableEvents = True
    End If
    End If
End Sub


Funktioniert super. Aber wenn ich mittels anderem Makro den Blattinhalt löschen möchte,

Range("E7:AC56").ClearContents

bekomme ich eine Fehlermeldung.(Fehler 13 Typen unverträglich).
Kann ich die Meldung beim Löschen umgehen oder obriges Makro für das Löschen deaktivieren und dann wieder aktivieren?

Bin für jede Hilfe dankbar

Gruß
Marcl
  


Betrifft: AW: Makro mit anderem Makro an- ausschalten von: harry
Geschrieben am: 10.09.2004 09:30:34

hi,
versuchs mal so:
in der allgemeinen daklaration eine boolsche variable definieren, zb löschen
die sub worksheet change in die if-bedingung
if löschen=false
setzen.

in der sub, in der du löschen möchtest:
löschen=true
Range("E7:AC56").ClearContents
löschen =false

liebe grüße,
harry


  


Betrifft: Undo im Makro - nur letzte Benutzeraktion von: Beate Schmitz
Geschrieben am: 10.09.2004 09:45:39

Hallo Marci,

die Excel-Hilfe sagt zur Undo Methode:

"Es wird immer nur die letzte Benutzeraktion rückgängig gemacht. Diese Zeile muss die erste Zeile im Makro sein."

Da du aber schon aus dem ersten Makro das zweite Makro aufgerufen hast, ist es ja die zweite Benutzeraktion. Da sehe ich das Problem.

Nepumuk empfahl mir letztens in einem anderen Thread einen interessanten Link zu Limitationen von Undo:

http://195.186.84.74/xlimits/speicher.htm#Der%20Undo-Speicher

Gruß,
Beate


  


Betrifft: Fehler gefunden von: Beate Schmitz
Geschrieben am: 10.09.2004 10:42:51

Hallo Marci,

es geht doch in eine andere Richtung:
1. Zeile Worksheet_Change Makro greift in den Löschbereich des anderen Makros.

Das Worksheet_Change muss wie folgt lauten:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 1 Or Target.Column < 5 Or Target.Column > 29 Then Exit Sub
If Target.Value <> "x" Then
If Target.Value <> "" Then
    Application.EnableEvents = False
   Application.Undo
    Application.EnableEvents = True
    End If
    End If
End Sub


Ich hatte es im Beispiel ausgetestet, Datei anbei:
https://www.herber.de/bbs/user/10741.xls

Gruß,
Beate


  


Betrifft: Danke Euch beiden o.T. von: Marcl
Geschrieben am: 10.09.2004 11:45:57

.


 

Beiträge aus den Excel-Beispielen zum Thema "Makro mit anderem Makro an- ausschalten"