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

VBA-Makro durch Änderung in spez. Zelle starten

VBA-Makro durch Änderung in spez. Zelle starten
31.10.2005 16:17:56
Dietrich
Hallo liebes Forum,
ich möchte, dass ein VBA-Makro startet, wenn ich in einer bestimmten Zelle eines Worksheets einen neuen Wert eingebe.
Nun habe ich es mit "OnEntry" versucht. Das klappt auch ;-)
Allerdings:
Das Makro selbst schreibt nach ein paar Berechnungen Ergebniswerte in das gleiche Worksheet. In dem Moment beschwert sich Excel und stoppt das Makro.
Hat hier jemand einen Tip woran es liegt und wie ich das umgehen kann?
Vielen Dank für Eure Hilfe!
Grüße
Dietrich

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Makro durch Änderung in spez. Zelle starten
31.10.2005 16:21:56
Dr.
Hi,
vermutlich löst Du durch das Schreiben der Ergebniswerte ein Change-Ereignis aus.
Probiers mal mit Application.EnableEvents = False
AW: VBA-Makro durch Änderung in spez. Zelle starte
31.10.2005 16:24:34
Matthias
Hallo Dietrich,
Ich glaube, OnEntry ist veraltet und wird nur noch aus Kompatibilitätsgründen unterstützt.
ins Tabellenmodul:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ber As Range, z As Range
Set ber = Intersect(Target, Range("A1:D5"))
If Not ber Is Nothing Then
'für jede Zelle im Bereich extra
For Each z In ber
Application.EnableEvents = False
'hier der Code (nächste Zeile ist nur ein Beispiel)
z.Value = z.Value + 2
Application.EnableEvents = True
Next z
End If
End Sub

Gruß Matthias
Anzeige
Dank! es klappt ;-)
31.10.2005 16:39:12
Dietrich
Hallo Matthias,
Vielen Dank! Das war der Tipp!
Verwende jetzt:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ber As Range
Set ber = Intersect(Target, Range("b4"))
If Not ber Is Nothing Then
Call "name meines makros"
End if
Den Part mit "Application.EnableEvents = False/True" hab ich in das Makro übernommen.
Ich bin mir zwar sicher, dass es so nicht 100% richtig ist (zumal es läuft, ohne dass ich bem Makro oben ein "EndSub" habe, aber es macht was es soll. Es funktioniert sogar, wenn ich andere Werte des Worksheets ändere (solange b4 halt nicht leer ist).
Prima und Vielen an Dich (und an Dich "Dr." natürlich auch!) für die schnelle Hilfe!!!
Grüße
Dietrich
Anzeige
AW: Dank! es klappt ;-)
31.10.2005 16:45:06
Matthias
Hallo Dietrich,
...(zumal es läuft, ohne dass ich bem Makro oben ein "EndSub" habe
Das gleube ich dir nicht.
Schau mal weiter unten im Code, da muss ein End Sub stehen, sonst kommt sofort ein Laufzeitfehler.
Es funktioniert sogar, wenn ich andere Werte des Worksheets ändere (solange b4 halt nicht leer ist).
Dein Makro fragt nicht ab, ob B4 leer ist oder nicht, sondert ob die Schnittmenge aus dem geänderten Bereich und B4 nicht leer ist, d.h. ob (unter anderem) die Zelle B4 geändert wurde.
Gruß Matthias
AW: Dank! es klappt ;-)
31.10.2005 16:54:50
Dietrich
Hallo Matthias,
hast Recht, unten stand es...
Ok, dann versteh ich es jetzt auch :-)
Viele Grüße und Dank nochmal
Dietrich
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige