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

Macro nur einmal ausführen

Macro nur einmal ausführen
28.03.2007 19:57:00
Ralph
Hallo Excel/VBA Gemeinde.
ich habe aus einem :

Private Sub Worksheet_Change(ByVal Target As range)
'   erstellt von Hajo.Ziplies@web.de  16.08.03
'   alle Buchstaben Groß in einem bestimmten Bereich
Dim RaBereich As range, RaZelle As range
Application.EnableEvents = False
'   Bereich der Wirksamkeit
Set RaBereich = range("AO13:BM13")
'    ActiveSheet.Unprotect
Application.EnableEvents = False
For Each RaZelle In range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
RaZelle.Value = UCase(RaZelle.Value)
End If
Next RaZelle
Application.EnableEvents = True
'    ActiveSheet.protect
Set RaBereich = Nothing
Set RaBereich = range("AI13")
If range("AI13") = "7" Then
Call LöscheEinAusModule
End If
Den Macro LöscheEinAusModule gestartet.
Sub LöscheEinAusModule()
' LöscheEinAusModule Makro
range("H13:I13").Select
ActiveCell.FormulaR1C1 = "0"
range("K13:L13").Select
ActiveCell.FormulaR1C1 = "0"
range("N13:O13").Select
ActiveCell.FormulaR1C1 = "0"
range("Q13:R13").Select
ActiveCell.FormulaR1C1 = "0"
range("T13:U13").Select
ActiveCell.FormulaR1C1 = "0"
range("W13:X13").Select
ActiveCell.FormulaR1C1 = "0"
range("Z13:AA13").Select
ActiveCell.FormulaR1C1 = "0"
range("AC13:AD13").Select
ActiveCell.FormulaR1C1 = "0"
range("AI13:AJ13").Select
End Sub

Nun möchte ich das der Macro nur einmal ausgeführt wird wenn in Zelle AI13 die Zahl 7 steht und damit alle genannten Felder auf 0(Null) setzt.
Allerdings passiert dies dauert und zwingt das kmpl. Excel in die Knie!
Kann mir jemand erklären wie ich in VBA diese Funktion nur einmal ausführe aber trotzdem immer die Zelle überwache. Und falls dort eien 7 eigegeben wird auch wieder den Makro starte?
Vielen Dank im Voraus
Gruss Ralph

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macro nur einmal ausführen
28.03.2007 20:27:24
Ramses
Hallo
Probier mal

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("AI13") = "7" Then
Application.EnableEvents = False
Call LöscheEinAusModule
Application.EnableEvents = True
End If
'   erstellt von Hajo.Ziplies@web.de  16.08.03
'   alle Buchstaben Groß in einem bestimmten Bereich
Dim RaBereich As Range, RaZelle As Range
Application.EnableEvents = False
'   Bereich der Wirksamkeit
Set RaBereich = Range("AO13:BM13")
'    ActiveSheet.Unprotect
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
RaZelle.Value = UCase(RaZelle.Value)
End If
Next RaZelle
Application.EnableEvents = True
'    ActiveSheet.protect
Set RaBereich = Nothing
End Sub

Allerdings, wenn wieder 7 in AI13 eingetragen wird, läuft das Makro wieder los.
Gruss Rainer
Anzeige
AW: Macro nur einmal ausführen
28.03.2007 20:32:27
Worti
Hallo Ralph,
vor Application.EnableEvents If Target.Address = "$AI$13" And Target.Value = 7 Then
und vor End Sub End If
Gruß Worti
AW: Macro nur einmal ausführen
29.03.2007 16:05:14
Ralph
Hallo ,
erst einaml vielen Dank an Ramses und Worti.
Funktioniert soweit ganz gut. Nur wenn ich im Bereich "AO13:BM13" eine Eingabe lösche (Taste Entfernen)
bekomme ich folgende Meldung " Laufzeitfehler 13 - Typ unverträglich.
Bei : If Target.Address = "$AI$13" And Target.Value = 7 Then
Hier nochmal der kmpl. Teil:

Private Sub Worksheet_Change(ByVal Target As range)
'If range("AI13") = "7" Then
If Target.Address = "$AI$13" And Target.Value = 7 Then
Application.EnableEvents = False
Call LöscheEinAusModule
Application.EnableEvents = True
End If
'   erstellt von Hajo.Ziplies@web.de  16.08.03
'   alle Buchstaben Groß in einem bestimmten Bereich
Dim RaBereich As range, RaZelle As range
Application.EnableEvents = False
'   Bereich der Wirksamkeit
Set RaBereich = range("AO13:BM13")
'    ActiveSheet.Unprotect
Application.EnableEvents = False
For Each RaZelle In range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
RaZelle.Value = UCase(RaZelle.Value)
End If
Next RaZelle
Application.EnableEvents = True
'    ActiveSheet.protect
Set RaBereich = Nothing
End Sub
Woran kann dies liegen ?
veilen Dank im Voraus.
Gruss Ralph
Anzeige
AW: Macro nur einmal ausführen
29.03.2007 17:44:47
Ralph
Hat jemand ein Idee woran das liegen könnte ?
AW: Macro nur einmal ausführen
29.03.2007 17:59:00
Kurt

Private Sub Worksheet_Change(ByVal Target As range)
If Target.Count = 1 Then
'If range("AI13") = "7" Then
If Target.Address = "$AI$13" And Target.Value = 7 Then
Application.EnableEvents = False
Call LöscheEinAusModule
Application.EnableEvents = True
End If
'   erstellt von Hajo.Ziplies@web.de  16.08.03
'   alle Buchstaben Groß in einem bestimmten Bereich
Dim RaBereich As range, RaZelle As range
Application.EnableEvents = False
'   Bereich der Wirksamkeit
Set RaBereich = range("AO13:BM13")
'    ActiveSheet.Unprotect
Application.EnableEvents = False
For Each RaZelle In range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
RaZelle.Value = UCase(RaZelle.Value)
End If
Next RaZelle
Application.EnableEvents = True
'    ActiveSheet.protect
Set RaBereich = Nothing
End If
End Sub
mfg Kurt
Anzeige
AW: Macro nur einmal ausführen
29.03.2007 20:55:00
Ralph
Hallo Kurt,
tausend Dank für deine Antwort.
Funktioniert einwandfrei
Gruss Ralph

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige