Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
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
Inhaltsverzeichnis

Worksheet_Change

Worksheet_Change
29.04.2013 20:15:27
Thorsten_Z
Moin liebes Forum,
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("P6").Value = Sheets("Tabelle11").Range("A2") Then Range("P6").Value = Sheets(" _
Tabelle11").Range("E2").Value
'If Range("P6").Value = Sheets("Tabelle11").Range("A2") Then Range("Q6").Value = Sheets(" _
Tabelle11").Range("G2").Value
End Sub
In Zelle "P6" schreibe ich ein Kürzel, welches in "Tabelle11" Zelle A2 verglichen wird und bei Übereinstimmung die entsprechende Zeit aus "E2" in Zelle "P6" schreibt.
Soweit funktioniert es auch.
Nun möchte ich aber auch aus der Zelle "G2" aus "Tabelle11" die Zeit in die Zelle "Q6" schreiben. Das funktioniert jedoch NICHT.
Was ich nicht nachvollziehen kann ist, wenn ich den Code NUR mit der zweiten Zeile (oben im Code noch durch ' deaktiviert) laufen lasse, schreibt er mir zwar die Zeit in "Q6", hängt sich dann aber mit der Meldung "Nicht genügend Stapelspeicher vorhanden" auf!!?
Vom Prinzip soll der Code so sein, dass er das Kürzel in "P6" mit dem in Tabelle11 A2 vergleicht und mir die Zeiten in "P6" (Kürzel wird überschrieben) und "Q6" einträgt.
Wer kann mir da Hilfestellung geben?
Vielen dank
Gruß
Thorsten

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

Betreff
Datum
Anwender
Anzeige
schalte die Events erst aus
29.04.2013 20:50:28
Matthias
Hallo
probiers mal so (schalte die Events erst aus und dannach wieder ein)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrEvents
Application.EnableEvents = False
If Range("P6").Value = Sheets("Tabelle11").Range("A2").Value Then
Range("P6").Value = Sheets("Tabelle11").Range("E2").Value
Range("Q6").Value = Sheets("Tabelle11").Range("G2").Value
End If
Application.EnableEvents = True
Exit Sub
ErrEvents:
Application.EnableEvents = True
End Sub
Gruß Matthias

Anzeige
AW: schalte die Events erst aus
29.04.2013 20:56:45
Thorsten_Z
Hallo Matthias,
JA, so funktioniert es bestens!!!
Vielen Dank!
Besten Gruß
Thorsten

AW: schalte die Events erst aus
29.04.2013 21:02:04
Gerd
Hallo Thorsten,
ungetestet, dafür mit ein paar Kommentaren versehen. Der wesentliche Unterschied zu normalen Prozeduren ist, dass Ereignisprozeduren sich selbständig aufrufen, ohne Einschränkung beim Auslösen (hier Änderungen in jeder Zelle), ggf. rekursiv, d.h. wiederholend, wenn in der Prozedur in Eingabezellen geändert wird. Aber macht nichts! Jeder hat mal angefangen. Du kannst einzelne Befehle im Code markieren, die F1 - Taste drücken u. die Erläuterung in der VBA-Hilfe nachlesen.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$P$6" Then 'NUR bei Eingabe in P6 die weiteren Befehle ausführen
If Target.Value  "" Then 'wenn in P6 etwas eingegeben worden ist
If Target.Value = Sheets("Tabelle11").Range("A2") Then 'wenn die Eingabe Tabelle11  _
Zelle A2 entspricht
Application.EnableEvents = False 'Ereignisprozeduren ausschalten, weil P6 per Code  _
erneut geändert wird
Target.Value = Sheets("Tabelle11").Range("E2").Value
Application.EnableEvents = True 'Ereignisprozeduren wieder einschalte
Range("Q6").Value = Sheets("Tabelle11").Range("G2").Value
End If
End If
End If
End Sub
Gruß Gerd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige