![]() |
Betrifft: KW in Ps umrechnen oder umgekehrt
von: Werner
Geschrieben am: 18.04.2003 - 17:43:12
Hallo!
Ich gebe in die Zelle A3 die PS ein oder in die Zelle B3 die KW.
Es soll dann je nach Eingabe in der anderen Zelle der berechnete Wert stehen. Dazu hab ich folgendes Makro gemacht. Leider funktioniert es nicht - es produziert einen Zirkelbezug, da es in beide Zellen (A3 und B3) die Formel einträgt, trotz meiner 2 IF-Bedingungen.
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$3" And Target.Address <> "$B$3" Then Exit Sub
If Target.Address = "$A$3" Then Call PS
If Target.Address = "$B$3" Then Call KW
End Sub
Sub PS()
Range("B3").FormulaR1C1 = "=RC[-1]/1.36"
End Sub
Sub KW()
Range("A3").FormulaR1C1 = "=RC[+1]*1.36"
End Sub
Kennt jemand eine Lösung für mein Problem.
Besten Dank - Werner
![]() ![]() |
Re: KW in Ps umrechnen oder umgekehrt
von: Andreas S
Geschrieben am: 18.04.2003 - 17:49:29
Hallo,
versuch's mal so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Set Zelle = Target
If Target.Address = "$A$3" Or Target.Address = "$B$3" Then
Application.EnableEvents = False
If Zelle.Address = "$A$3" Then
ActiveSheet.Range("B3").FormulaR1C1 = "=RC[-1]/1.36"
End If
If Zelle.Address = "$B$3" Then
ActiveSheet.Range("A3").FormulaR1C1 = "=RC[+1]*1.36"
End If
End If
Application.EnableEvents = True
End Sub
Gruss
Andreas
![]() ![]() |
Korrektur
von: Andreas S
Geschrieben am: 18.04.2003 - 17:54:24
Sorry, hab was vergessen. So geht's:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Set Zelle = Target
If Target.Address = "$A$3" Or Target.Address = "$B$3" Then
Application.EnableEvents = False
If Zelle.Address = "$A$3" Then
ActiveSheet.Range("B3").Value = ActiveSheet.Range("A3") / 1.36
End If
If Zelle.Address = "$B$3" Then
ActiveSheet.Range("A3").Value = ActiveSheet.Range("B3") * 1.36
End If
End If
Application.EnableEvents = True
End Sub
![]() ![]() |
Re: KW in Ps umrechnen oder umgekehrt
von: Ramses
Geschrieben am: 18.04.2003 - 17:54:47
Hallo Werner,
das kann nicht gehen :-)
Wenn das Change-Ereignis in A3 ausgelöst wird, wird die Formel in B3 eingetragen, das wiederum ein Change-Ereignis auslöst :-))
... und schon geht es rund in Excel.
Du musst EXCEL mitteilen, dass es jetzt aufhören muss.
Setze dazu eine Public Variable die mit Wahr oder Falsch gefüllt wird. Dann wird diese Variable beim Eintritt eines Change-Ereignises geprüft. Wenn Sie WAHR ist, also die Berechnung, oder der Formeleintrag bereits durchgeführt wurde, wird das weitere Makro abgebrochen.
Public CalcDone As Boolean Sub PS() Sub KW()
Code eingefügt mit Syntaxhighlighter 1.16
Option Explicit
Sub Worksheet_Change(ByVal Target As Range)
If CalcDone = True Then
CalcDone = False
Exit Sub
End If
If Target.Address <> "$A$3" And Target.Address <> "$B$3" Then Exit Sub
If Target.Address = "$A$3" Then Call PS
If Target.Address = "$B$3" Then Call KW
End Sub
CalcDone = True
Range("B3").FormulaR1C1 = "=RC[-1]/1.36"
End Sub
CalcDone = True
Range("A3").FormulaR1C1 = "=RC[+1]*1.36"
End Sub
Gruss Rainer
![]() ![]() |
Re: KW in Ps umrechnen oder umgekehrt
von: Werner
Geschrieben am: 18.04.2003 - 17:59:03
Dem Andreas recht herzlichen Dank! ! !
Klappt super !
Danke
![]() ![]() |
Re: Korrektur
von: Ramses
Geschrieben am: 18.04.2003 - 17:59:42
Hallo Andreas,
EnableEvents ist auch eine elegante Variante:-)
Aber warum der Umweg über
Dim Zelle as Range
Set Zelle = Target
???
Target.Address bringt das gleiche Ergebnis ;-)
Gruss Rainer
![]() ![]() |
Re: KW in Ps umrechnen oder umgekehrt
von: @dd
Geschrieben am: 18.04.2003 - 18:00:32
Hi, oder ganz banal in irgend eine Zelle den Bezugswert , zB, in A1 schreibst 1,36 ( einfach als Integer/ Zahlenwert )
und in B2 di Formel : =A2/$A$1 (also A2 geteilt durch den Wert nur aus Zelle A1).
Egal welchen Wert du jetzt in A2 eingibst , der wird in B2 durch den Wert aus Zelle A1, also 1,36 geteilt und angezeigt.
Die formel kannst dann so oft du willst nach unten weiterkopieren, und immer in A.. eingeben , dann wird daneben in B... der Wert entsprechend angezeigt.
easy.
Gruss
![]() ![]() |
Re: KW in Ps umrechnen oder umgekehrt
von: andre
Geschrieben am: 18.04.2003 - 19:19:12
hallo werner,
eine alternative wäre noch, bei eintrag nicht die formel zu nehmen, sondern das ergebnis.
gruss andre
![]() ![]() |
Re: Korrektur
von: Andreas S
Geschrieben am: 18.04.2003 - 21:10:50
Hallo Ramses,
für diesen Fall hast du voöllig recht, aber ich hatte für das Beispiel eine eigene Anwendung kopiert und "zurechtgestutzt". Und die war einiges aufwendiger.
Gruss
Andreas
![]() |