Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1056to1060
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(ByVal Target As Range)

Worksheet_Change(ByVal Target As Range)
06.03.2009 15:21:33
Axel
Ein schönes Wochenende zuvor wünschend!
Aufgabenstellung:
Ich möchte in einer Zelle einen Wert schreiben, was ein Makro auslösen soll. In einer Zweiten soll dadurch automatisch eine Umrechenformel einfügt werden. Auf diese Weise kann man (trivial, nur als Beispiel) bei der Bedienung eines Sheets eine Temperatur entweder in °C oder Kelvin eintragen, in der jeweils anderen Zelle erscheint die Formel / die umgerechnete Temperatur: Eingetragene Temperatur±273°, je nach dem.
Problem:
Wenn ich es über angehängten Code mache, schreibt er (nachdem Zelle1 das Makro ausgelöst hat) brav in Zelle2 meine Formel. ABER: Zelle2 ist auch mit einem Intersect-Befehl ausgestattet. D.h. das Schreiben der Formel löst das gleiche Makro erneut aus und in Zelle1 wir eine Formel geschrieben. Was wiederum das Schreiben der Formel in Zelle2 auslöst... eine schöne "Art Zirkelbezug" auf Programierungsebene.
Sagte ich das hier schon? HILFE!
Na, dann ist es ja jetzt gesagt.
Und so schließe ich ab wie ich begonnen habe: schönes Wochende!

Private Sub Worksheet_Change(ByVal Target As Range)
'C10 = °C-Zelle
'C11 = Kelvin-Zelle
If Not Intersect(Target, Range("C10")) Is Nothing Then
Range("C11").FormulaR1C1 = "=ROUND(R[+1]C+273,2)"
End If
If Not Intersect(Target, Range("C11")) Is Nothing Then
Range("C10").FormulaR1C1 = "=ROUND(R[-1]C-273,2)"
End If
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change(ByVal Target As Range)
06.03.2009 15:27:49
Renee
Hi Axel,

Private Sub Worksheet_Change(ByVal Target As Range)
'C10 = °C-Zelle
'C11 = Kelvin-Zelle
Application.EnableEvents = False
Select Case Target.Address(0, 0)
Case "C10"
Range("C11").FormulaR1C1 = "=ROUND(R[+1]C+273,2)"
Case "C11"
Range("C10").FormulaR1C1 = "=ROUND(R[-1]C-273,2)"
End Select
Application.EnableEvents = True
End Sub


GreetZ Renée

AW: Worksheet_Change(ByVal Target As Range)
06.03.2009 15:39:21
fcs
Hallo Axel,
durch temporäres Deaktivieren der Ereignismakros löst du das Problem.
Deine Funktion ist auch noch nicht ganz korrekt und die 0,15 K würde ich bei der Umrechnung auch noch berücksichtigen, wenn die Werte auf 2 Stellen nach dem Komma gerundet werden.
Bei Ereignismakros für einzelne Zellen benötigt man nicht unbedingt das Intersect-Konstrukt. Die Prüfung der Zelladresse tuts auch und ist auch übersichtlicher zu prüfen.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Address
Case "$C$10" '= °C-Zelle
Range("C11").FormulaR1C1 = "=ROUND(R[-1]C+273.15,2)"
Case "$C$11" ' = Kelvin-Zelle
Range("C10").FormulaR1C1 = "=ROUND(R[+1]C-273.15,2)"
End Select
Application.EnableEvents = True
End Sub


Anzeige
AW: Oder formelfrei
06.03.2009 20:36:07
Gerd
Hallo Axel,
falls keine weiteren Berechnungen ausgelöst werden sollen, auch so zum Beispiel.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$C$10" Then
Range("C11") = Application.Round(Target.Value + 273.15, 2)
ElseIf Target.Address = "$C$11" Then
Range("C10") = Application.Round(Target.Value - 273.15, 2)
End If
Application.EnableEvents = True
End Sub


Gruß

Männer, ich danke Euch! (oT)
09.03.2009 10:40:28
Axel
-
Frauen also nicht! na, dankeschön! (oWT)
09.03.2009 11:05:31
Renee

Renèe = Frauenname, Renè = Mannername
09.03.2009 12:33:19
Axel
Was dazugelernt, das wußte ich nicht.
Herzlichen Dank Renèe, entschuldige meine Unwissenheit.
Versönlicher Gruß,
Axel
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige