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

Code beenden wenn Makro ausgeführt wird

Code beenden wenn Makro ausgeführt wird
12.09.2006 13:05:55
Sven
Hallo, ich brauche noch einmal Hilfe.
Wenn ich auf einen Button klicke, dann soll dieser Code umgangen werden

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Bestellnummer, c As Range, lz As Long
On Error GoTo ende
If Cells(Target.Row, 9) <= Cells(Target.Row, 10) Then
With Sheets("Bestellung")
Bestellnummer = Cells(Target.Row, 7)
Set c = .Columns(1).Find(What:=Bestellnummer, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
c(1, 5) = Cells(Target.Row, 8) - Cells(Target.Row, 9) 'wenn Bestellnummer bereits vorhanden, dann Wert überschreiben
Else
lz = .Cells(Rows.Count, 1).End(xlUp).Row + 1 ' Reihen jeweils um 1 erweitern
.Cells(lz, 1) = Cells(Target.Row, 7) 'kopiert Artikelnummer nach Bestellung in Spalte 1
.Cells(lz, 2) = Cells(Target.Row, 3) 'kopiert Warengruppe nach Bestellung in Spalte 2
.Cells(lz, 3) = Cells(Target.Row, 4) 'kopiert Artikelname nach Bestellung in Spalte 3
.Cells(lz, 4) = Cells(Target.Row, 5) 'kopiert Inhalt nach Bestellung in Spalte 4
.Cells(lz, 5) = Cells(Target.Row, 8) - Cells(Target.Row, 9) 'Differenz aus Soll-Ist in Spalte 5
End If
End With
Else
---------------dieser Bereich soll dann unterbrochen werden --------------
With Sheets("Bestellung")
Bestellnummer = Cells(Target.Row, 7)
Set c = .Columns(1).Find(What:=Bestellnummer, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
.Rows(c.Row).Delete shift:=xlUp
End If
End With
End If
If Cells(Target.Row, 11) <> "" Then Cells(Target.Row, 11) = "" 'nach Zugang Zelle leeren
If Cells(Target.Row, 12) <> "" Then Cells(Target.Row, 12) = "" 'nach Abagng Zelle leeren
ende:
End Sub

und zwar bei diesem KLick
'bestellung auslösen
Sub Schaltfläche1_BeiKlick()
With Sheets("Bestand")
For z = 13 To Cells(Rows.Count, 1).End(xlUp).Row
Bestellnummer = Cells(z, 1)
Set c = .Cells.Find(What:=Bestellnummer, LookIn:=xlValues, LookAt:=xlWhole)
Sheets("Bestand").Unprotect Password:="Sommer12"
If Not c Is Nothing Then c(1, 3) = c(1, 2): c(1, 7) = "aktiv"
Next z
Sheets("Bestellung").Unprotect Password:="Sommer12"
Range("a13:e130").Select
Selection.Sort Key1:=Range("c13"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("a13").Select
Sheets("Bestellung").PrintOut Copies:=1, Collate:=True
Sheets("Bestellung").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="Sommer12"
End With
Sheets("Bestand").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="Sommer12"
End Sub
Danke und Gruß
Sven

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code beenden wenn Makro ausgeführt wird
12.09.2006 13:16:21
Harald
Hallo Sven
erste Zeile im Schaltflächen Code.
Application.EnableEvents = False
und am Ende wieder auf True setzen. Ggf. mit On Error Anweisung arbeiten, damit bei Codeabruch, die Ereignisse immer wieder auf True gesetzt werden.
Gruss Harald
AW: Code beenden wenn Makro ausgeführt wird
12.09.2006 13:29:11
Sven
Danke, das hat geholfen
AW: Code beenden wenn Makro ausgeführt wird
12.09.2006 13:18:03
Matthias
Hallo Sven,
also wenn die komplette Worksheet_Change()-Prozedur umgangen werden soll:

'bestellung auslösen
Sub Schaltfläche1_BeiKlick()
Application.EnableEvents = False
' hier dein ursprünglicher Code
Application.EnableEvents = True
End Sub

Wenn nur dein markierter Bereich umgangen werden soll, brauchst du eine modulweite Variable (falls die beiden Prozeduren im gleichen Modul stehen, wovon ich ausgehe). Diese definerst du im Modul außerhalb der Prozeduren (also ganz oben):

Dim Clicked As Boolean

Dann dein BeiBlick-Prozedur:

'bestellung auslösen
Sub Schaltfläche1_BeiKlick()
Clicked = True
With Sheets("Bestand")
For z = 13 To Cells(Rows.Count, 1).End(xlUp).Row
Bestellnummer = Cells(z, 1)
Set c = .Cells.Find(What:=Bestellnummer, LookIn:=xlValues, LookAt:=xlWhole)
Sheets("Bestand").Unprotect Password:="Sommer12"
If Not c Is Nothing Then c(1, 3) = c(1, 2): c(1, 7) = "aktiv"
Next z
Sheets("Bestellung").Unprotect Password:="Sommer12"
Range("a13:e130").Select
Selection.Sort Key1:=Range("c13"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("a13").Select
Sheets("Bestellung").PrintOut Copies:=1, Collate:=True
Sheets("Bestellung").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="Sommer12"
End With
Sheets("Bestand").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="Sommer12"
Clicked = False
End Sub

und die Worksheet_Change()-Prozedur änderst du so:

'---------------dieser Bereich soll dann unterbrochen werden --------------
If Not Clicked Then
With Sheets("Bestellung")
Bestellnummer = Cells(Target.Row, 7)
Set c = .Columns(1).Find(What:=Bestellnummer, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
.Rows(c.Row).Delete shift:=xlUp
End If
End With
End If

Gruß Matthias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige