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

Private Sub deaktivieren

Private Sub deaktivieren
29.03.2008 12:27:00
Lena

Hallo...
Kann mir jemand diesen Befehl so deaktivieren, dass er zwar läuft, wenn ich die Zellen wechsle, aber nicht wenn Makros ablaufen
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Besten Dank
Lena

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Private Sub deaktivieren
29.03.2008 12:30:00
Nepumuk
Hallo Lena,
so:
Public Sub Lena()
    Application.EnableEvents = False
    
    'Dein Code
    
    Application.EnableEvents = True
End Sub

Gruß
Nepumuk

Anzeige
AW: Private Sub deaktivieren
29.03.2008 16:50:00
Lena
Hallo Nepumuk,
danke, aber es funktioniert nicht richtig.

Public Sub Zeile_einfügen() ist zwar deaktiviert, wenn der Makro läuft, aber wenn ich eine  _
Zeile einfügen will, wird die Formel (Spalte 10) nicht mit übernommen. Ich nehme an, dass der 

Public Sub gar nicht mitläuft. Hab ich irgendwas falsch gemacht? Hast du noch eine andere Lö _
sung? Besten Dank!
Gruß
Lena


Public Sub Zeile_einfügen()
Application.EnableEvents = False
ActiveSheet.Unprotect
'Sparversion, Formeln werden ggf. bei Werteingabe in Spalte B eingefügt
'Listeneingabe bei Eingabe in neuer Zeile werden Formeln kopiert
Dim objZelle As Range, arrFormelSpalten
Dim lngSpalte As Long
Const lngZeile1 As Long = 9 '1. Zeile mit Formel
Const lngSpalteE As Long = 10 'Spalte bei deren Eingabe ggf. Formel kopiert wird
arrFormelSpalten = Array(10)  'Spalten mit Formeln
With Me
For Each objZelle In Target
'Prüfen ob geänderte Zeile(n) Formel enthält
If Not .Cells(objZelle.Row, arrFormelSpalten(0)).HasFormula _
And objZelle.Row >= lngZeile1 _
And objZelle.Column = lngSpalteE Then
Application.EnableEvents = False
'Formel in Spalten kopieren
For lngSpalte = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
Select Case objZelle.Row
Case lngZeile1
'Zeile direkt unter Spaltentitel eingefügt
.Range(.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)), _
.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)).End(xlDown)).FillUp
Case Is 


Anzeige
AW: Private Sub deaktivieren
29.03.2008 17:41:15
Nepumuk
Hallo Lena,
ich versteh deinen Code nicht ganz. Wo kommt z.B. Target her? Was hat es mit arrFormelSpalten auf sich? Das ist ein Array mit der Dimension 0 welches den Wert 10 enthält. Warum da nicht einfach eine Konstante?
Gruß
Nepumuk

AW: Private Sub deaktivieren
29.03.2008 18:55:57
Lena
Hallo Nepumuk,
ehrlich gesagt, verstehe ich ihn auch nicht. Den hat mir jemand geschrieben der wesentlich mehr Ahnung hat wie ich. In Spalte 10 sollen beim Zeileneinfügen einfach die Formeln übernommen werden (hab Version 2002, da geht es nicht anders). Hachladen geht leider nicht, weil die ganze Datei schon zu groß ist. Vielleicht siehst du doch noch erine Möglichkeit.
Gruß
Lena

Anzeige
AW: Private Sub deaktivieren
29.03.2008 18:59:00
Nepumuk
Hallo Lena,
da muss noch mehr Code in der Mappe sein. Eventuell hilft der uns weiter.
Gruß
Nepumuk

AW: Private Sub deaktivieren
29.03.2008 19:18:18
Gerd
Hallo Lena,
kann es sein, dass dieser Code vor deiner Frage ursprünglich im
Private Sub Worksheet_Change
stand ?
Dann müsstest Du noch erläutern, was Du mit "Zellen wechseln" meinst u. welche Makros Du
sonst noch hast.
Gruß Gerd

AW: Private Sub deaktivieren
29.03.2008 19:35:00
Lena
Hallo Gerd,
Meine Frage (eigentlich hat sie mein Mann gestellt) stand unter dem Betreff "Zeile einfügen u.Formel v.Zelle darüber überne" Daraus kannst du bestimmt etwas mehr ersehen. Unter "Private Sub Worksheet_Change" hatte ich schon mal gedacht, dass es klappt, ging aber doch nicht. Das beste wäre, wenn ich die komplette Datei zumailen könnte. Hochladen geht nicht, weil über 300 MB. Aber dazu brauchte ich deine E-Mailadresse.
Sag mal, ob wir es vielleicht so versuchen können.
Gruß
Lena

Anzeige
AW: Private Sub deaktivieren
29.03.2008 19:39:00
Lena
Hallo Nepumuk
mal 'ne kopierte Antwort von Gerd. Unter u.st. Threats kannst du vielleicht etwas mehr ersehen.
Meine Frage (eigentlich hat sie mein Mann gestellt) stand unter dem Betreff "Zeile einfügen u.Formel v.Zelle darüber überne" Daraus kannst du bestimmt etwas mehr ersehen. Unter "Private Sub Worksheet_Change" hatte ich schon mal gedacht, dass es klappt, ging aber doch nicht. Das beste wäre, wenn ich die komplette Datei zumailen könnte. Hochladen geht nicht, weil über 300 MB. Aber dazu brauchte ich deine E-Mailadresse.
Sag mal, ob wir es vielleicht so versuchen können.
Gruß
Lena

Anzeige
AW: Private Sub deaktivieren
29.03.2008 20:55:00
Gerd
Hallo Lena,
300 MB würden mein Postfach zerreißen.
Lade doch bitte mal hier eine Mappe (nur) mit dem betreffenden Tabellenblatt u. dem Code im Tabellenblattmodul hoch.
Gruß Gerd

AW: Private Sub deaktivieren
29.03.2008 21:11:00
Karsten
Hallo Gerd,
Geht nicht, ist noch über 900 KB. Wat nun.
Gruß
Lena

AW: Private Sub deaktivieren
29.03.2008 21:46:00
Gerd
Hallo Karsten,
diese Größe würde noch in mein Postfach passen.
Vorname.AnfangsbuchstabeFamilienname & eiserättwebpunktde
Gruß Gerd

AW: Private Sub deaktivieren
30.03.2008 06:42:00
Karsten
Morgen Gerd,
die Mails kommen immer wieder zurück. Schicke mal bitte etwas an k.mickein@web.de.
Danke
Karsten

Anzeige
AW: Private Sub deaktivieren
30.03.2008 15:10:00
fcs
Hallo Lenea und Karsten,
ich bin ja der "Verbrecher" der ursprünglichen Prozedur zum Eintragen der Formeln in Leerzeilen, wenn Werte eingetragen werden. Diese hatte ich ja mit der Change-Ereignis-Prozedur realisiert.
Wenn diese jetzt extreme Probleme bei der Ausführung anderer Ereignisprozeduren macht, dann gibt es verschieden Möglichkeiten:
1. In der Prozedur, die "ungestört" durchlaufen soll, werden am Anfang die Ereignisprozeduren deaktiviert und am Ende wieder aktiviert.
Das haben die anderen Helfer hier schon versucht euch nahe zu bringen.
2. In einem Modul wird eine Public Variable als Boolean deklariert.
Zu Beginn der Prozedur, die "ungestört" durchlaufen soll, wird diese Variable auf True gesetzt, am Ende wieder auf False.
In den Ereignisprozeduren, deren Code während der Prozedur nicht abgearbeitet werden soll, wird zu Beginn in einer If-Anweisung der Wert der Public Variablen abgefragt. Bei True wird die Ereignisprozedur per "Exit Sub" sofort wieder verlassen.
3. Ihr verwendet zum Ergänzen/Einfügen der Leerzeilen mit Formel kein Ereignismakro, sondern Prozeduren, die nur auf Anforderung (z.B per Button-Klick) eine Leerzeile mit Formeln einfügen bzw.anfügen. Das schaut dann etwa wie folgt aus.
Gruß
Franz

'## Die folgenden Prozeduren werden immer im aktiven Blatt ausgeführt  ##
Sub LeerenachZeile2()
'Makro für Button, 1. Zeile mit Formeln in Zeile 2
Call LeerzeilemitFormelnEinfuegen(lngZeile1:=2)
End Sub
Sub LeereZeileanfuegen()
'Makro für Button, Formeln ab Zeile 2, Spalte 10 ist eine der Spalten mit Formel
Call LeerzeilemitFormelnAnfuegen(lngZeile1:=2, lngSpalteFormel:=10)
End Sub
Sub LeerzeilemitFormelnEinfuegen(lngZeile1 As Long)
'Fuegt an Position der aktiven Zelle eine Leerzeile ein und _
übernimmt Formeln aus Zeile darüber
Dim lngZeile As Long
Dim objZelle As Range
'lngZeile1 '1. Zeile mit Formel, vor dieser werden keine Zeilen eingefügt
Set objZelle = ActiveCell
lngZeile = objZelle.Row
If lngZeile > lngZeile1 Then
'Leerzeile einfügen
objZelle.EntireRow.Insert shift:=xlShiftDown
'Formeln aus Zeile oberhalb herunter kopieren
For Each objZelle In Range(Cells(lngZeile, 1), _
Cells(lngZeile, Cells.SpecialCells(xlCellTypeLastCell).Column))
If objZelle.Offset(-1, 0).HasFormula Then
Range(objZelle.Offset(-1, 0), objZelle).FillDown
End If
Next
Else
MsgBox "Zeilen werden nur unterhalb von Zeile " & lngZeile1 & " eingefügt!"
End If
Set objZelle = Nothing
End Sub
Sub LeerzeilemitFormelnAnfuegen(lngZeile1 As Long, lngSpalteFormel As Long)
'Fuegt am Ende der Liste Leerzeile ein und übernimmt Formeln aus Zeiledrüber
Dim lngZeile As Long, objZelle As Range
'lngZeile1  = 1. Zeile mit Formel, muss ausgefüllt sein
'lngSpalteDormel = eine der Spalten mit einer Formel
'Letzte ausgefüllte Zelle in Spalte mit Formel ermitteln
Set objZelle = Cells(ActiveSheet.Rows.Count, lngSpalteFormel).End(xlUp)
lngZeile = objZelle.Row
If lngZeile >= lngZeile1 Then
'Letzte Zeile in nächste Zeile kopieren
objZelle.EntireRow.Copy Destination:=Cells(lngZeile + 1, 1)
'Inhalte in Zellen ohne Formeln löschen
For Each objZelle In Range(Cells(lngZeile + 1, 1), _
Cells(lngZeile + 1, Cells.SpecialCells(xlCellTypeLastCell).Column))
If Not objZelle.HasFormula Then
objZelle.ClearContents
End If
Next
Cells(lngZeile + 1, 1).Select
Else
MsgBox "Spalte " & lngSpalteFormel & " ist in Zeile " & lngZeile1 _
& " noch nicht ausgefüllt!"
End If
Set objZelle = Nothing
End Sub


Anzeige
AW: Private Sub deaktivieren
30.03.2008 20:39:40
Karsten
Hallo Franz,
deine Befehlsverkettungen laufen. Geht es auch, dass nur im Bereich "Name_des_Schülers:Min_letzte_Zelle" die Zeileneifügerei funktioniert? Ansonsten, besten Dank!
Gruß
Karsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige