Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro bei Löschung nicht ausführen

Makro bei Löschung nicht ausführen
25.04.2008 07:37:00
Josef
Guten Morgen!
Ich habe folgendes Makro:

Sub NeuPosDel()
Dim bereich As Range
Dim wks As Worksheet
Sheets("Ausprägungen").Select
Set wks = Workbooks("Masterfile.xls").Worksheets("Ausprägungen")
Set bereich = wks.Range("B2:J" & wks.Range("J65536").End(xlUp).Row)
bereich.Clear
Set bereich = Nothing
''''Sheets("Ausprägungen").Select
''''Range("B2:J500").Select
''''Selection.ClearContents
''''Range("J2").Select
End Sub


Wenn ich dieses Makro ausführe werden im Arbeitsblatt "Ausprägungen" im Bereich B2:J die Einträge gelöscht.
Wenn ich in der Spalte B einen Wert eingebe so wird ein anderes Makro über ein Worksheet_Change Ereignis ausgeführt.
Bei der Löschung der Werte wird jedoch dieses Makro auch ausgeführt, was aber nicht sein sollte.
Wie kann ich bitte verhindern, wenn ich die Löschung der Einträge durchführe, dass das Makro über das Worksheet_Change Ereignis ausgeführt wird?
Ich habe es jetzt bereits mit Select und ohne Select probiert, jedoch ohne Erfolg.
Danke
Josef

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro bei Löschung nicht ausführen
25.04.2008 07:48:00
Harald
Hallo Josef,
da fällt mir eien Steuerung per Semaphor ein.
Definiere eine Public Variable vom Typ Boolean, z.B. "WurdeGelöscht"
In der Sub NeuPosDel setzt Du die Variable WurdeGelöscht auf True
In der dem WorksheetChange Ergeinis zugeordneten SUB prüfst Du die Variable WurdeGelöscht. Wenn sie True ist, setzt Du WurdeGelöscht wieder auf False und brichst die SUB ab. Ansonsten führst Du die Sub aus.
Ich bin mir nur nicht klar, ob der Inhalt der Public Variablen über die Prozeduraufrufe hinweg erhalten bleibt. Notfalls verwendest Du eine Hilfszelle irgendwo im Worksheet versteckt dafür.
Gruß Harald

Anzeige
AW: Makro bei Löschung nicht ausführen
25.04.2008 08:01:38
Josef
Hallo Harald!
Ich komme punkto Variablen noch nicht richtig zu Rande.
Ist es vielleicht so gemeint: (Nachstehend der ganze Ablauf)
In ein Modul
Public WurdeGelöscht As Boolean
Sub NeuPosDel()
Dim bereich As Range
Dim wks As Worksheet
Sheets("Ausprägungen").Select
WurdeGelöscht = True
Set wks = Workbooks("Masterfile.xls").Worksheets("Ausprägungen")
Set bereich = wks.Range("B2:J" & wks.Range("J65536").End(xlUp).Row)
bereich.Clear
Set bereich = Nothing
''''Sheets("Ausprägungen").Select
''''Range("B2:J500").Select
''''Selection.ClearContents
''''Range("J2").Select
End Sub



Private Sub Worksheet_Change(ByVal Target As Range)
WurdeGelöscht = False
If Target.Column = 2 And Target.Row > 1 Then
Sheets("tabelle1").Cells(Rows.Count, 27).End(xlUp).Offset(1, 0) = Target
Application.Run (Workbooks("Masterprog.xla").Name & "!Loesch_HOKUERZEL")
End If
End Sub


Sub Loesch_HOKUERZEL()
Dim mldg, stil, titel, grc
mldg = "Ist der Eintrag korrekt"
stil = vbYesNo + vbCritical + vbDefaultButton2
titel = "Frage ?"
grc = MsgBox(mldg, stil, titel)
If grc = vbYes Then
Exit Sub
Else
If grc = vbNo Then
Call Del_Ausprägung_HOKÜRZEL
End If
End If
End Sub


Sub Del_Ausprägung_HOKÜRZEL()
On Error GoTo WEITER
Dim mldg, stil, titel, grc
Dim wks As Worksheet
Set wks = Workbooks("Masterfile.xls").Worksheets("Tabelle1")
mldg = "Wert wirklich löschen ?"
stil = vbYesNo + vbCritical + vbDefaultButton2
titel = "Frage ?"
grc = MsgBox(mldg, stil, titel)
If grc = vbYes Then
Else
Exit Sub
End If
With wks
If IsEmpty(.Cells(.Cells(.Rows.Count, 27).End(xlUp).Row, 1)) Then _
.Cells(.Cells(.Rows.Count, 27).End(xlUp).Row, 27).ClearContents
End With
Sheets("Ausprägungen").Range("B2").End(xlDown).Select
WEITER:
End Sub


Danke
Josef

Anzeige
AW: Makro bei Löschung nicht ausführen
25.04.2008 08:04:00
Harald
Nicht ganz,
Du wertest den Status der Variablen ja gar nicht aus:

Private Sub Worksheet_Change(ByVal Target As Range)
if WurdeGelöscht then
WurdeGelöscht = False
exit sub
end if
If Target.Column = 2 And Target.Row > 1 Then
Sheets("tabelle1").Cells(Rows.Count, 27).End(xlUp).Offset(1, 0) = Target
Application.Run (Workbooks("Masterprog.xla").Name & "!Loesch_HOKUERZEL")
End If
End Sub


AW: Makro bei Löschung nicht ausführen
25.04.2008 08:28:39
Josef
Hallo Harald!
Danke für Deine Hilfe und Deine Mühe.
Josef

AW: Makro bei Löschung nicht ausführen
25.04.2008 07:51:00
Matthias
Hallo
Setz am Anfang von Deinem Code
Application.EnableEvents = False
und vor End Sub wieder auf True
Gruß Matthias

Anzeige
AW: Makro bei Löschung nicht ausführen
25.04.2008 08:04:52
Harald
Jo, das ist natürlich viel eleganter, wenn's funktioniert
Harald

AW: Makro bei Löschung nicht ausführen
25.04.2008 08:27:00
Josef
Hallo Matthias!
Danke für Deine Hilfe. Das war die Lösung .
Ich wünsche noch einen schönen Tag.
Josef

AW: Makro bei Löschung nicht ausführen
25.04.2008 08:28:46
Erich
Hallo Josef,
das sollte auch ausreichen:

Sub NeuPosDel()
Application.EnableEvents = False
With Workbooks("Masterfile.xls").Worksheets("Ausprägungen")
.Range("B2:J" & .Range("J65536").End(xlUp).Row).Clear
End With
Application.EnableEvents = True
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige